From 77a51d04856c398ee006564299e2ec4fd49f533d Mon Sep 17 00:00:00 2001 From: Uyanide Date: Tue, 30 Sep 2025 00:26:58 +0200 Subject: [PATCH] better ssh --- .scripts/ssh-init | 10 ---------- fish/post.d/fetch.fish | 2 +- fish/post.d/sshs.fish | 29 +++++++++++++++++++++++++++++ fish/prev.d/alias.fish | 8 +++++++- fish/prev.d/env.fish | 9 ++++++++- 5 files changed, 45 insertions(+), 13 deletions(-) delete mode 100644 .scripts/ssh-init create mode 100644 fish/post.d/sshs.fish diff --git a/.scripts/ssh-init b/.scripts/ssh-init deleted file mode 100644 index e2ce567..0000000 --- a/.scripts/ssh-init +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -if [ -z "$SSH_AUTH_SOCK" ]; then - eval "$(ssh-agent -s)" >/dev/null 2>&1 - for key in "$HOME/.ssh/keys/"*; do - if [ -f "$key" ]; then - ssh-add "$key" >/dev/null 2>&1 - fi - done -fi \ No newline at end of file diff --git a/fish/post.d/fetch.fish b/fish/post.d/fetch.fish index fadc235..63c9f1e 100644 --- a/fish/post.d/fetch.fish +++ b/fish/post.d/fetch.fish @@ -30,7 +30,7 @@ if type -q fastfetch end end -# add 'set -g no_fetch' somewhere in prev.d to disable auto-fetch +# add 'set -g no_fetch' somewhere other than post.d to disable fetching if not set -q no_fetch if type -q ff-brief ff-brief diff --git a/fish/post.d/sshs.fish b/fish/post.d/sshs.fish new file mode 100644 index 0000000..7c6b73e --- /dev/null +++ b/fish/post.d/sshs.fish @@ -0,0 +1,29 @@ +# ssh with encrypted private keys +# $ssh_keys should be set in advance or left empty to use default keys +if type -q ssh + # start ssh agent if not already running + if not set -q SSH_AUTH_SOCK + if test -f "$HOME/.ssh-agent" -a -r "$HOME/.ssh-agent" + bass source "$HOME/.ssh-agent" > /dev/null 2>&1 + # check if the socket is actually working + if not ssh-add -l > /dev/null 2>&1 + command rm -f "$HOME/.ssh-agent" + set -e SSH_AUTH_SOCK + end + end + + if not set -q SSH_AUTH_SOCK 2>&1 + command rm -f "$HOME/.ssh-agent" + bass eval (ssh-agent -s | tee "$HOME/.ssh-agent") > /dev/null 2>&1 + end + end + + # only need to input passphrase once per session + function sshs + # test if keys are added to ssh-agent + if not ssh-add -l > /dev/null 2>&1 + ssh-add $ssh_keys + end + ssh $argv + end +end \ No newline at end of file diff --git a/fish/prev.d/alias.fish b/fish/prev.d/alias.fish index 575afd7..9fe3699 100644 --- a/fish/prev.d/alias.fish +++ b/fish/prev.d/alias.fish @@ -13,6 +13,7 @@ if type -q fzf end end + # cd if type -q zoxide zoxide init fish | source @@ -46,4 +47,9 @@ alias grep="grep --color=auto" if type -q nvim set -x EDITOR nvim set -x VISUAL nvim -end \ No newline at end of file +end + +# others +if type -q tty-clock + alias clock="tty-clock -c -C 3" +end diff --git a/fish/prev.d/env.fish b/fish/prev.d/env.fish index 97ca31e..4baa413 100644 --- a/fish/prev.d/env.fish +++ b/fish/prev.d/env.fish @@ -1,4 +1,11 @@ +# PATH fish_add_path $HOME/.local/bin fish_add_path $HOME/.cargo/bin fish_add_path $HOME/go/bin -fish_add_path $HOME/.scripts \ No newline at end of file +fish_add_path $HOME/.scripts + +# man +if type -q bat + set -x MANPAGER "sh -c 'col -bx | bat -l man -p'" + set -x MANROFFOPT -c +end \ No newline at end of file