diff --git a/modules/fish/default.nix b/modules/fish/default.nix index 3f90c74..aedc3b4 100644 --- a/modules/fish/default.nix +++ b/modules/fish/default.nix @@ -52,9 +52,34 @@ command fzf ''; sessionizer = '' - set -l selected (fd . $HOME/dev/ -t d -d 1 | fzf) + function delete_session + set -l session_name (basename $0) + echo "delete $session_name" + end + + function kill_session + set -l session_name (basename $0) + echo "delete $session_name" + end + + set -l options (fd . $HOME/dev/ -t d -d 1) + set -l selected (options | fzf \ + --prompt="Select project: " \ + --header="Enter: Select | Ctrl+D: Delete Session | Ctrl+K: Kill Session" \ + --bind="ctrl-d:execute(delete_session {})+reload($0 --generate-list)" \ + --bind="ctrl-k:execute(kill_session {})+reload($0 --generate-list)") + + if test -z "$selected" + return 1 + end + set -l session_name (basename $selected) - zellij pipe --plugin file:${pkgs.zellij-switch}/bin/zellij-switch.wasm -- "--session $session_name --cwd $selected --layout default" + + if "$ZELLIJ" == 0 + zellij pipe --plugin file:${pkgs.zellij-switch}/bin/zellij-switch.wasm -- "--session $session_name --cwd $selected --layout default" + else + zellij attach "$session_name" --create + end ''; nn = '' # Require a title argument