From b3530d7c4a102935fa26498a160ee1dc6c1e9c03 Mon Sep 17 00:00:00 2001 From: delta Date: Fri, 4 Jul 2025 00:38:29 +0200 Subject: :3 --- .../fish/functions/fish_commandline_toggle.fish | 26 ++++++++++++++++++ .config/fish/functions/fish_ssh_agent.fish | 32 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 .config/fish/functions/fish_commandline_toggle.fish create mode 100644 .config/fish/functions/fish_ssh_agent.fish (limited to '.config/fish/functions') diff --git a/.config/fish/functions/fish_commandline_toggle.fish b/.config/fish/functions/fish_commandline_toggle.fish new file mode 100644 index 0000000..688c97e --- /dev/null +++ b/.config/fish/functions/fish_commandline_toggle.fish @@ -0,0 +1,26 @@ +function __commandline_stash -d 'Stash current command line' + set -g __stash_command_position (commandline -C) + set -g __stash_command (commandline -b) + commandline -r "" +end + +function __commandline_pop -d 'Pop last stashed command line' + if not set -q __stash_command + return + end + commandline -r $__stash_command + if set -q __stash_command_position + commandline -C $__stash_command_position + end + set -e __stash_command + set -e __stash_command_position +end + +function fish_commandline_toggle -d 'Stash current commandline if not empty, otherwise pop last stashed commandline' + set -l cmd (commandline -b) + if test "$cmd" + __commandline_stash + else + __commandline_pop + end +end diff --git a/.config/fish/functions/fish_ssh_agent.fish b/.config/fish/functions/fish_ssh_agent.fish new file mode 100644 index 0000000..5960b75 --- /dev/null +++ b/.config/fish/functions/fish_ssh_agent.fish @@ -0,0 +1,32 @@ +function __ssh_agent_is_started -d "check if ssh agent is already started" + if begin; test -f $SSH_ENV; and test -z "$SSH_AGENT_PID"; end + source $SSH_ENV > /dev/null + end + + if test -z "$SSH_AGENT_PID" + return 1 + end + + ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep -q ssh-agent + #pgrep ssh-agent + return $status +end + + +function __ssh_agent_start -d "start a new ssh agent" + ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV + chmod 600 $SSH_ENV + source $SSH_ENV > /dev/null + true # suppress errors from setenv, i.e. set -gx +end + + +function fish_ssh_agent --description "Start ssh-agent if not started yet, or uses already started ssh-agent." + if test -z "$SSH_ENV" + set -xg SSH_ENV $HOME/.ssh/environment + end + + if not __ssh_agent_is_started + __ssh_agent_start + end +end -- cgit v1.2.3