diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf index 2578cbf..1d42d08 100644 --- a/dot_config/kitty/kitty.conf +++ b/dot_config/kitty/kitty.conf @@ -46,7 +46,7 @@ map ctrl+shift+g launch_ov lazygit map ctrl+shift+f toggle_layout stack map ctrl+shift+e launch_tb nvim map ctrl+shift+a launch_vs omp -map ctrl+shift+p launch_hs atuin-pick.py +map ctrl+shift+p launch_hs atuin-pick # Misc map ctrl+shift+c copy_to_clipboard diff --git a/dot_local/bin/executable_atuin-pick.py b/dot_local/bin/executable_atuin-pick similarity index 61% rename from dot_local/bin/executable_atuin-pick.py rename to dot_local/bin/executable_atuin-pick index 2b473d0..1602452 100755 --- a/dot_local/bin/executable_atuin-pick.py +++ b/dot_local/bin/executable_atuin-pick @@ -4,20 +4,24 @@ atuin search -i draws its TUI on the tty and prints the selected command to stdout (Esc prints nothing). Filter to history from the current directory. Run the selection with rc loaded so aliases and functions -resolve, then drop to an interactive shell. +resolve — its output stays in this split — then drop to an interactive +shell. """ import os +import shutil import subprocess import sys -# kitty launches this outside a shell, so atuin's init never ran. +# kitty's launch env has neither ~/.atuin/bin on PATH nor ATUIN_SESSION +# (atuin's shell init never ran), so resolve and seed both here. +atuin = shutil.which("atuin") or os.path.expanduser("~/.atuin/bin/atuin") if "ATUIN_SESSION" not in os.environ: os.environ["ATUIN_SESSION"] = subprocess.run( - ["atuin", "uuid"], stdout=subprocess.PIPE, text=True + [atuin, "uuid"], stdout=subprocess.PIPE, text=True ).stdout.strip() sel = subprocess.run( - ["atuin", "search", "-i", "--filter-mode", "directory"], + [atuin, "search", "-i", "--filter-mode", "directory"], stdout=subprocess.PIPE, text=True, ).stdout.strip()