diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index e5f4774..44158d7 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -123,10 +123,8 @@ in "|" = "split-window -h"; "C-l" = "send-keys C-l"; "R" = "source-file $XDG_CONFIG_HOME/tmux/tmux.conf \\; display-message 'Reloaded tmux.conf'"; - }; - root = { - "C-f" = "new-window ts"; - "C-a" = "new-window ta"; + "f" = "new-window ts"; + "a" = "new-window ta"; }; copy-mode-vi = { "v" = "send -X begin-selection"; diff --git a/modules/programs/tmux/default.nix b/modules/programs/tmux/default.nix index 3f832e3..67a4d5f 100644 --- a/modules/programs/tmux/default.nix +++ b/modules/programs/tmux/default.nix @@ -19,7 +19,7 @@ let tmux-sessionizer = pkgs.writeFishApplication { name = "ts"; - runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd tmux-switch ]; + runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd tmux-switch gawk ]; text = readFile ./tmux-sessionizer/script.fish; completions = readFile ./tmux-sessionizer/completions.fish; }; @@ -97,7 +97,7 @@ in if ! fish_is_root_user && test "$TERM_PROGRAM" != 'vscode' && ${insideVariableMissing} if test -z $tmux_autostarted set -x tmux_autostarted true - ts + tmux new -A -s home end end ''; diff --git a/modules/programs/tmux/tmux-attach/script.fish b/modules/programs/tmux/tmux-attach/script.fish index 1a4ddd6..6d1ab79 100644 --- a/modules/programs/tmux/tmux-attach/script.fish +++ b/modules/programs/tmux/tmux-attach/script.fish @@ -1,4 +1,4 @@ -set selected (tmux list-sessions -F '#{session_name}' 2>/dev/null | fzf $argv) +set selected (tmux list-sessions -F '#{session_name}' 2>/dev/null | fzf --query "$argv") if not test -n "$selected" exit 1 end diff --git a/modules/programs/tmux/tmux-sessionizer/script.fish b/modules/programs/tmux/tmux-sessionizer/script.fish old mode 100644 new mode 100755 index 311ec4a..a5e957b --- a/modules/programs/tmux/tmux-sessionizer/script.fish +++ b/modules/programs/tmux/tmux-sessionizer/script.fish @@ -1,10 +1,10 @@ +#!/usr/bin/env fish set pipe (mktemp --dry-run) mkfifo $pipe -fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | tee $pipe >/dev/null & -fd . ~/ --min-depth 1 --max-depth 3 --type d | tee $pipe >/dev/null & - -set selected (cat $pipe | fzf $argv) +fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec-batch dirname {} | tee $pipe >/dev/null & +fd . ~/ --min-depth 1 --max-depth 3 --type d --exec-batch realpath {} | tee $pipe >/dev/null & +set selected (cat $pipe | awk '!seen[$0]++' | fzf --query "$argv") rm -f "$pipe" set selected_name (basename $selected 2>/dev/null | string replace "." "_")