Compare commits

...

2 Commits

Author SHA1 Message Date
Anton Volnuhin
e3c9f4edd5 fish: smarter SSH_AUTH_SOCK refresh, reading tmux session env over stale global 2026-06-12 01:25:16 +03:00
Anton Volnuhin
497cbce0c6 kitty: add ctrl+shift detach_window keybindings 2026-06-12 01:25:16 +03:00
2 changed files with 96 additions and 4 deletions

View File

@ -13,6 +13,8 @@ map cmd+7 goto_tab 7
map cmd+8 goto_tab 8
map cmd+9 goto_tab 9
map shift+enter send_text all \x1b[13;2u
map ctrl+shift+left detach_window tab-left
map ctrl+shift+d detach_window ask
cursor_trail 0
shell_integration no-cursor

View File

@ -12,8 +12,94 @@ set fish_color_valid_path
set -g fish_greeting
if test -S ~/.1password/agent.sock
set -gx SSH_AUTH_SOCK ~/.1password/agent.sock
function __tmux_environment_value --argument-names name
# The session environment is refreshed on every attach (update-environment),
# while the global one is frozen at server start. Prefer the session value,
# treat its "-NAME" removal marker as unset, and only fall back to the
# global environment when the session has no entry at all.
set -l value (tmux show-environment "$name" 2>/dev/null)
if test -z "$value"
set value (tmux show-environment -g "$name" 2>/dev/null)
end
if string match -q -- "$name=*" "$value"
string replace -r "^$name=" "" -- "$value"
end
end
function __is_1password_ssh_auth_sock --argument-names sock
test -n "$sock"; or return 1
string match -q -- "$HOME/.1password/agent.sock" "$sock"
or string match -q -- "$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" "$sock"
end
function __is_local_macos_ssh_auth_sock --argument-names sock
test -n "$sock"; or return 1
string match -q -- "/var/run/com.apple.launchd.*" "$sock"
or string match -q -- "/private/tmp/com.apple.launchd.*" "$sock"
end
function __find_forwarded_ssh_auth_sock
for sock in /tmp/ma-*/* /tmp/ssh-*/* /private/tmp/ssh-*/*
if test -S "$sock"
echo "$sock"
return
end
end
end
function __refresh_ssh_auth_sock
set -l tmux_sock
set -l in_ssh_session 0
if set -q TMUX
set tmux_sock (__tmux_environment_value SSH_AUTH_SOCK)
set -l tmux_ssh_connection (__tmux_environment_value SSH_CONNECTION)
if test -n "$tmux_ssh_connection"
set -gx SSH_CONNECTION "$tmux_ssh_connection"
set in_ssh_session 1
else
set -e SSH_CONNECTION SSH_CLIENT SSH_TTY
end
else if set -q SSH_CONNECTION
set in_ssh_session 1
end
if test "$in_ssh_session" = 1
if test -n "$tmux_sock"; and test -S "$tmux_sock"; and not __is_1password_ssh_auth_sock "$tmux_sock"; and not __is_local_macos_ssh_auth_sock "$tmux_sock"
set -gx SSH_AUTH_SOCK "$tmux_sock"
return
end
if set -q SSH_AUTH_SOCK; and test -S "$SSH_AUTH_SOCK"; and not __is_1password_ssh_auth_sock "$SSH_AUTH_SOCK"; and not __is_local_macos_ssh_auth_sock "$SSH_AUTH_SOCK"
return
end
set -l forwarded_sock (__find_forwarded_ssh_auth_sock)
if test -n "$forwarded_sock"
set -gx SSH_AUTH_SOCK "$forwarded_sock"
return
end
set -e SSH_AUTH_SOCK
return
end
if test -S "$HOME/.1password/agent.sock"
set -gx SSH_AUTH_SOCK "$HOME/.1password/agent.sock"
return
end
if test -n "$tmux_sock"; and test -S "$tmux_sock"
set -gx SSH_AUTH_SOCK "$tmux_sock"
end
end
__refresh_ssh_auth_sock
function __refresh_ssh_auth_sock_before_command --on-event fish_preexec
__refresh_ssh_auth_sock
end
# Make Tide show context for orb/SSH sessions that set SSH_CONNECTION but not SSH_TTY
@ -192,5 +278,9 @@ source ~/.orbstack/shell/init2.fish 2>/dev/null || :
set -gx GITHUB_PERSONAL_ACCESS_TOKEN (security find-generic-password -s codex-github-mcp-pat -w 2>/dev/null)
# Added by Antigravity CLI installer
set -gx PATH "/Users/anton/.local/bin" $PATH
# >>> grok installer >>>
fish_add_path $HOME/.grok/bin
# <<< grok installer <<<
# mimocode
fish_add_path /Users/anton/.mimocode/bin