whame / tmux-modal

Execute complex tmux commands in just a few keystrokes with a modal mode that is designed to be efficient, easy to remember and comfortable
MIT License
172 stars 4 forks source link

zsh? #13

Closed slacksystem closed 4 months ago

slacksystem commented 9 months ago

Does this plugin only work for bash? I run zsh and was really excited about it but nothing seems to happen when I try to use it. I saw something in another issue about the bash version being too old, does that mean zsh is unsupported? If so any chance of supporting t hat in the future?

whame commented 9 months ago

No, as long as you have bash installed, it should work. I myself primarily use zsh with tmux, and it works perfectly.

Could you describe your problem in some more details? How did you install the plugin? What exactly doesn't work? Can you try running it manually (run ./tmux-modal.tmux in a tmux session) and see if we get some more info?

RichieDevR commented 5 months ago

hey im having a similar issue to this where turning it on and off doesnt work. pressing alt m does nothing and when i turn on modal-on-start I cannot turn it off at all and am forced to remove it entirely

whame commented 5 months ago

I was just about to close this issue due to inactivity from the original author...

Could you try to answer the questions in my previous response? Thanks!

slacksystem commented 5 months ago

Hi I'm so sorry I totally forgot about this. To answer your questions finally, I installed using tpm. It seemed to install fine, and the folder is there with all the files, but pressing C-a M-m (my prefix is C-a) does nothing. I look at the keybinds that exist in my tmux session, and there is nothing from tmux-modal. I tried setting the keybind to enter the mode to M-v which was not bound either and it still did not do anything. There was no output from running ./tmux-modal.tmux manually within the session and it does not seem to have any effect as far as the issue is concerned. I don't get any errors or anything anywhere it just seems to have no impact at all

whame commented 5 months ago

No worries! Now we at least have two people with the same problem in this issue :)

Hm, that's really weird. If ./tmux-modal.tmux runs successfully (exit code 0), we should expect the keybindings to be set up...

What's the output of tmux lsk after running it manually?

RichieDevR commented 5 months ago

Here is the output from tmux lsk:

This is with tmux-modal active

bind-key    -T copy-mode          C-Space                send-keys -X begin-selection bind-key    -T copy-mode          C-a                    send-keys -X start-of-line bind-key    -T copy-mode          C-b                    send-keys -X cursor-left bind-key    -T copy-mode          C-c                    send-keys -X cancel bind-key    -T copy-mode          C-e                    send-keys -X end-of-line bind-key    -T copy-mode          C-f                    send-keys -X cursor-right bind-key    -T copy-mode          C-g                    send-keys -X clear-selection bind-key    -T copy-mode          C-k                    send-keys -X copy-pipe-end-of-line-and-cancel bind-key    -T copy-mode          C-n                    send-keys -X cursor-down bind-key    -T copy-mode          C-p                    send-keys -X cursor-up bind-key    -T copy-mode          C-r                    command-prompt -i -I "#{pane_search_string}" -T search -p "(search up)" { send-keys -X search-backward-incremental "%%" } bind-key    -T copy-mode          C-s                    command-prompt -i -I "#{pane_search_string}" -T search -p "(search down)" { send-keys -X search-forward-incremental "%%" } bind-key    -T copy-mode          C-v                    send-keys -X page-down bind-key    -T copy-mode          C-w                    send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode          Escape                 send-keys -X cancel bind-key    -T copy-mode          Space                  send-keys -X page-down bind-key    -T copy-mode          ,                      send-keys -X jump-reverse bind-key    -T copy-mode          \;                     send-keys -X jump-again bind-key    -T copy-mode          F                      command-prompt -1 -p "(jump backward)" { send-keys -X jump-backward "%%" } bind-key    -T copy-mode          N                      send-keys -X search-reverse bind-key    -T copy-mode          P                      send-keys -X toggle-position bind-key    -T copy-mode          R                      send-keys -X rectangle-toggle bind-key    -T copy-mode          T                      command-prompt -1 -p "(jump to backward)" { send-keys -X jump-to-backward "%%" } bind-key    -T copy-mode          X                      send-keys -X set-mark bind-key    -T copy-mode          f                      command-prompt -1 -p "(jump forward)" { send-keys -X jump-forward "%%" } bind-key    -T copy-mode          g                      command-prompt -p "(goto line)" { send-keys -X goto-line "%%" } bind-key    -T copy-mode          n                      send-keys -X search-again bind-key    -T copy-mode          q                      send-keys -X cancel bind-key    -T copy-mode          r                      send-keys -X refresh-from-pane bind-key    -T copy-mode          t                      command-prompt -1 -p "(jump to forward)" { send-keys -X jump-to-forward "%%" } bind-key    -T copy-mode          MouseDown1Pane         select-pane bind-key    -T copy-mode          MouseDrag1Pane         select-pane \; send-keys -X begin-selection bind-key    -T copy-mode          MouseDragEnd1Pane      send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode          WheelUpPane            select-pane \; send-keys -X -N 5 scroll-up bind-key    -T copy-mode          WheelDownPane          select-pane \; send-keys -X -N 5 scroll-down bind-key    -T copy-mode          DoubleClick1Pane       select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode          TripleClick1Pane       select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode          Home                   send-keys -X start-of-line bind-key    -T copy-mode          End                    send-keys -X end-of-line bind-key    -T copy-mode          NPage                  send-keys -X page-down bind-key    -T copy-mode          PPage                  send-keys -X page-up bind-key    -T copy-mode          Up                     send-keys -X cursor-up bind-key    -T copy-mode          Down                   send-keys -X cursor-down bind-key    -T copy-mode          Left                   send-keys -X cursor-left bind-key    -T copy-mode          Right                  send-keys -X cursor-right bind-key    -T copy-mode          M-C-b                  send-keys -X previous-matching-bracket bind-key    -T copy-mode          M-C-f                  send-keys -X next-matching-bracket bind-key    -T copy-mode          M-1                    command-prompt -N -I 1 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-2                    command-prompt -N -I 2 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-3                    command-prompt -N -I 3 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-4                    command-prompt -N -I 4 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-5                    command-prompt -N -I 5 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-6                    command-prompt -N -I 6 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-7                    command-prompt -N -I 7 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-8                    command-prompt -N -I 8 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-9                    command-prompt -N -I 9 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode          M-<                    send-keys -X history-top bind-key    -T copy-mode          M->                    send-keys -X history-bottom bind-key    -T copy-mode          M-R                    send-keys -X top-line bind-key    -T copy-mode          M-b                    send-keys -X previous-word bind-key    -T copy-mode          M-f                    send-keys -X next-word-end bind-key    -T copy-mode          M-m                    send-keys -X back-to-indentation bind-key    -T copy-mode          M-r                    send-keys -X middle-line bind-key    -T copy-mode          M-v                    send-keys -X page-up bind-key    -T copy-mode          M-w                    send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode          M-x                    send-keys -X jump-to-mark bind-key    -T copy-mode          "M-{"                  send-keys -X previous-paragraph bind-key    -T copy-mode          "M-}"                  send-keys -X next-paragraph bind-key    -T copy-mode          M-Up                   send-keys -X halfpage-up bind-key    -T copy-mode          M-Down                 send-keys -X halfpage-down bind-key    -T copy-mode          C-Up                   send-keys -X scroll-up bind-key    -T copy-mode          C-Down                 send-keys -X scroll-down bind-key    -T copy-mode-vi       C-b                    send-keys -X page-up bind-key    -T copy-mode-vi       C-c                    send-keys -X cancel bind-key    -T copy-mode-vi       C-d                    send-keys -X halfpage-down bind-key    -T copy-mode-vi       C-e                    send-keys -X scroll-down bind-key    -T copy-mode-vi       C-f                    send-keys -X page-down bind-key    -T copy-mode-vi       C-h                    send-keys -X cursor-left bind-key    -T copy-mode-vi       C-j                    send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode-vi       Enter                  send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode-vi       C-u                    send-keys -X halfpage-up bind-key    -T copy-mode-vi       C-v                    send-keys -X rectangle-toggle bind-key    -T copy-mode-vi       C-y                    send-keys -X scroll-up bind-key    -T copy-mode-vi       Escape                 send-keys -X clear-selection bind-key    -T copy-mode-vi       Space                  send-keys -X begin-selection bind-key    -T copy-mode-vi       #                     send-keys -FX search-backward "#{copy_cursor_word}" bind-key    -T copy-mode-vi       \$                     send-keys -X end-of-line bind-key    -T copy-mode-vi       \%                     send-keys -X next-matching-bracket bind-key    -T copy-mode-vi       *                      send-keys -FX search-forward "#{copy_cursor_word}" bind-key    -T copy-mode-vi       ,                      send-keys -X jump-reverse bind-key    -T copy-mode-vi       /                      command-prompt -T search -p "(search down)" { send-keys -X search-forward "%%" } bind-key    -T copy-mode-vi       0                      send-keys -X start-of-line bind-key    -T copy-mode-vi       1                      command-prompt -N -I 1 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       2                      command-prompt -N -I 2 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       3                      command-prompt -N -I 3 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       4                      command-prompt -N -I 4 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       5                      command-prompt -N -I 5 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       6                      command-prompt -N -I 6 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       7                      command-prompt -N -I 7 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       8                      command-prompt -N -I 8 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       9                      command-prompt -N -I 9 -p (repeat) { send-keys -N "%%" } bind-key    -T copy-mode-vi       :                      command-prompt -p "(goto line)" { send-keys -X goto-line "%%" } bind-key    -T copy-mode-vi       \;                     send-keys -X jump-again bind-key    -T copy-mode-vi       ?                      command-prompt -T search -p "(search up)" { send-keys -X search-backward "%%" } bind-key    -T copy-mode-vi       A                      send-keys -X append-selection-and-cancel bind-key    -T copy-mode-vi       B                      send-keys -X previous-space bind-key    -T copy-mode-vi       D                      send-keys -X copy-pipe-end-of-line-and-cancel bind-key    -T copy-mode-vi       E                      send-keys -X next-space-end bind-key    -T copy-mode-vi       F                      command-prompt -1 -p "(jump backward)" { send-keys -X jump-backward "%%" } bind-key    -T copy-mode-vi       G                      send-keys -X history-bottom bind-key    -T copy-mode-vi       H                      send-keys -X top-line bind-key    -T copy-mode-vi       J                      send-keys -X scroll-down bind-key    -T copy-mode-vi       K                      send-keys -X scroll-up bind-key    -T copy-mode-vi       L                      send-keys -X bottom-line bind-key    -T copy-mode-vi       M                      send-keys -X middle-line bind-key    -T copy-mode-vi       N                      send-keys -X search-reverse bind-key    -T copy-mode-vi       P                      send-keys -X toggle-position bind-key    -T copy-mode-vi       T                      command-prompt -1 -p "(jump to backward)" { send-keys -X jump-to-backward "%%" } bind-key    -T copy-mode-vi       V                      send-keys -X select-line bind-key    -T copy-mode-vi       W                      send-keys -X next-space bind-key    -T copy-mode-vi       X                      send-keys -X set-mark bind-key    -T copy-mode-vi       ^                      send-keys -X back-to-indentation bind-key    -T copy-mode-vi       b                      send-keys -X previous-word bind-key    -T copy-mode-vi       e                      send-keys -X next-word-end bind-key    -T copy-mode-vi       f                      command-prompt -1 -p "(jump forward)" { send-keys -X jump-forward "%%" } bind-key    -T copy-mode-vi       g                      send-keys -X history-top bind-key    -T copy-mode-vi       h                      send-keys -X cursor-left bind-key    -T copy-mode-vi       j                      send-keys -X cursor-down bind-key    -T copy-mode-vi       k                      send-keys -X cursor-up bind-key    -T copy-mode-vi       l                      send-keys -X cursor-right bind-key    -T copy-mode-vi       n                      send-keys -X search-again bind-key    -T copy-mode-vi       o                      send-keys -X other-end bind-key    -T copy-mode-vi       q                      send-keys -X cancel bind-key    -T copy-mode-vi       r                      send-keys -X refresh-from-pane bind-key    -T copy-mode-vi       t                      command-prompt -1 -p "(jump to forward)" { send-keys -X jump-to-forward "%%" } bind-key    -T copy-mode-vi       v                      send-keys -X rectangle-toggle bind-key    -T copy-mode-vi       w                      send-keys -X next-word bind-key    -T copy-mode-vi       z                      send-keys -X scroll-middle bind-key    -T copy-mode-vi       {                     send-keys -X previous-paragraph bind-key    -T copy-mode-vi       }                     send-keys -X next-paragraph bind-key    -T copy-mode-vi       MouseDown1Pane         select-pane bind-key    -T copy-mode-vi       MouseDrag1Pane         select-pane \; send-keys -X begin-selection bind-key    -T copy-mode-vi       MouseDragEnd1Pane      send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode-vi       WheelUpPane            select-pane \; send-keys -X -N 5 scroll-up bind-key    -T copy-mode-vi       WheelDownPane          select-pane \; send-keys -X -N 5 scroll-down bind-key    -T copy-mode-vi       DoubleClick1Pane       select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode-vi       TripleClick1Pane       select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel bind-key    -T copy-mode-vi       BSpace                 send-keys -X cursor-left bind-key    -T copy-mode-vi       Home                   send-keys -X start-of-line bind-key    -T copy-mode-vi       End                    send-keys -X end-of-line bind-key    -T copy-mode-vi       NPage                  send-keys -X page-down bind-key    -T copy-mode-vi       PPage                  send-keys -X page-up bind-key    -T copy-mode-vi       Up                     send-keys -X cursor-up bind-key    -T copy-mode-vi       Down                   send-keys -X cursor-down bind-key    -T copy-mode-vi       Left                   send-keys -X cursor-left bind-key    -T copy-mode-vi       Right                  send-keys -X cursor-right bind-key    -T copy-mode-vi       M-x                    send-keys -X jump-to-mark bind-key    -T copy-mode-vi       C-Up                   send-keys -X scroll-up bind-key    -T copy-mode-vi       C-Down                 send-keys -X scroll-down bind-key    -T ktm-cmd            :                      command-prompt bind-key    -T ktm-cmd            c                      copy-mode bind-key    -T ktm-cmd            g                      switch-client -T ktm-goto bind-key    -T ktm-cmd            s                      switch-client -T ktm-session bind-key    -T ktm-cmd            w                      switch-client -T ktm-window bind-key    -T ktm-cmd            y                      paste-buffer bind-key    -T ktm-cmd            MouseDown1Pane         select-pane -t = \; send-keys -M bind-key    -T ktm-cmd            MouseDown1Status       select-window -t = bind-key    -T ktm-cmd            MouseDown2Pane         select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { paste-buffer -p } bind-key    -T ktm-cmd            MouseDown3Pane         if-shell -F -t = "#{||:#{mouse_any_flag},#{&&:#{pane_in_mode},#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}}}" { select-pane -t = ; send-keys -M } { display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "#{?mouse_hyperlink,Type #[underscore]#{=/9/...:mouse_hyperlink},}" C-h { copy-mode -q ; send-keys -l "#{q:mouse_hyperlink}" } "#{?mouse_hyperlink,Copy #[underscore]#{=/9/...:mouse_hyperlink},}" h { copy-mode -q ; set-buffer "#{q:mouse_hyperlink}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } } bind-key    -T ktm-cmd            MouseDown3Status       display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window } bind-key    -T ktm-cmd            MouseDown3StatusLeft   display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n { switch-client -n } Previous p { switch-client -p } '' Renumber N { move-window -r } Rename n { command-prompt -I "#S" { rename-session "%%" } } '' "New Session" s { new-session } "New Window" w { new-window } bind-key    -T ktm-cmd            MouseDrag1Pane         if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -M } bind-key    -T ktm-cmd            MouseDrag1Border       resize-pane -M bind-key    -T ktm-cmd            WheelUpPane            if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -e } bind-key    -T ktm-cmd            WheelUpStatus          previous-window bind-key    -T ktm-cmd            WheelDownStatus        next-window bind-key    -T ktm-cmd            DoubleClick1Pane       select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-word ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel } bind-key    -T ktm-cmd            TripleClick1Pane       select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-line ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel } bind-key    -T ktm-cmd            M-m                    set-option key-table root bind-key    -T ktm-cmd            M-MouseDown3Pane       display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "#{?mouse_hyperlink,Type #[underscore]#{=/9/...:mouse_hyperlink},}" C-h { copy-mode -q ; send-keys -l "#{q:mouse_hyperlink}" } "#{?mouse_hyperlink,Copy #[underscore]#{=/9/...:mouse_hyperlink},}" h { copy-mode -q ; set-buffer "#{q:mouse_hyperlink}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } bind-key    -T ktm-cmd            M-MouseDown3Status     display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window } bind-key    -T ktm-cmd            M-MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n { switch-client -n } Previous p { switch-client -p } '' Renumber N { move-window -r } Rename n { command-prompt -I "#S" { rename-session "%%" } } '' "New Session" s { new-session } "New Window" w { new-window } bind-key    -T ktm-goto           s                      switch-client -T ktm-goto-session bind-key    -T ktm-goto           w                      switch-client -T ktm-goto-window bind-key    -T ktm-goto-session   h                      switch-client -p bind-key    -T ktm-goto-session   l                      switch-client -n bind-key    -T ktm-goto-session   t                      choose-tree -Zs bind-key    -T ktm-goto-window    0                      select-window -t :0 bind-key    -T ktm-goto-window    1                      select-window -t :1 bind-key    -T ktm-goto-window    2                      select-window -t :2 bind-key    -T ktm-goto-window    3                      select-window -t :3 bind-key    -T ktm-goto-window    4                      select-window -t :4 bind-key    -T ktm-goto-window    5                      select-window -t :5 bind-key    -T ktm-goto-window    6                      select-window -t :6 bind-key    -T ktm-goto-window    7                      select-window -t :7 bind-key    -T ktm-goto-window    8                      select-window -t :8 bind-key    -T ktm-goto-window    9                      select-window -t :9 bind-key    -T ktm-goto-window    h                      select-window -t :- bind-key    -T ktm-goto-window    i                      command-prompt -p index "select-window -t \":%%\"" bind-key    -T ktm-goto-window    l                      select-window -t :+ bind-key    -T ktm-goto-window    o                      last-window bind-key    -T ktm-goto-window    t                      choose-tree -Zw bind-key    -T ktm-session        ,                      command-prompt -I "#S" "rename-session \"%%\"" bind-key    -T ktm-session        D                      kill-session bind-key    -T ktm-session        d                      detach-client bind-key    -T ktm-session        h                      switch-client -p bind-key    -T ktm-session        l                      switch-client -n bind-key    -T ktm-session        t                      choose-tree -Zs bind-key    -T ktm-window         ,                      command-prompt -I "#W" "rename-window -- \"%%\"" bind-key    -T ktm-window         0                      select-window -t :0 bind-key    -T ktm-window         1                      select-window -t :1 bind-key    -T ktm-window         2                      select-window -t :2 bind-key    -T ktm-window         3                      select-window -t :3 bind-key    -T ktm-window         4                      select-window -t :4 bind-key    -T ktm-window         5                      select-window -t :5 bind-key    -T ktm-window         6                      select-window -t :6 bind-key    -T ktm-window         7                      select-window -t :7 bind-key    -T ktm-window         8                      select-window -t :8 bind-key    -T ktm-window         9                      select-window -t :9 bind-key    -T ktm-window         D                      kill-window bind-key    -T ktm-window         H                      select-window -t :- bind-key    -T ktm-window         L                      select-window -t :+ bind-key    -T ktm-window         a                      switch-client -T ktm-window-arrange bind-key    -T ktm-window         b                      break-pane bind-key    -T ktm-window         c                      new-window bind-key    -T ktm-window         d                      kill-pane bind-key    -T ktm-window         h                      select-pane -L bind-key    -T ktm-window         i                      command-prompt -p index "select-window -t \":%%\"" bind-key    -T ktm-window         j                      select-pane -D bind-key    -T ktm-window         k                      select-pane -U bind-key    -T ktm-window         l                      select-pane -R bind-key    -T ktm-window         m                      switch-client -T ktm-window-move bind-key    -T ktm-window         n                      display-panes bind-key    -T ktm-window         o                      last-window bind-key    -T ktm-window         r                      set-option key-table ktm-window-resize bind-key    -T ktm-window         s                      switch-client -T ktm-window-split bind-key    -T ktm-window         t                      choose-tree -Zw bind-key    -T ktm-window         w                      set-option key-table ktm-window-pane bind-key    -T ktm-window         z                      resize-pane -Z bind-key    -T ktm-window-arrange 1                      select-layout even-horizontal bind-key    -T ktm-window-arrange 2                      select-layout even-vertical bind-key    -T ktm-window-arrange 3                      select-layout main-horizontal bind-key    -T ktm-window-arrange 4                      select-layout main-vertical bind-key    -T ktm-window-move    j                      swap-pane -D bind-key    -T ktm-window-move    k                      swap-pane -U bind-key    -T ktm-window-pane    ,                      command-prompt -I "#W" "rename-window -- \"%%\"" bind-key    -T ktm-window-pane    0                      select-window -t :0 bind-key    -T ktm-window-pane    1                      select-window -t :1 bind-key    -T ktm-window-pane    2                      select-window -t :2 bind-key    -T ktm-window-pane    3                      select-window -t :3 bind-key    -T ktm-window-pane    4                      select-window -t :4 bind-key    -T ktm-window-pane    5                      select-window -t :5 bind-key    -T ktm-window-pane    6                      select-window -t :6 bind-key    -T ktm-window-pane    7                      select-window -t :7 bind-key    -T ktm-window-pane    8                      select-window -t :8 bind-key    -T ktm-window-pane    9                      select-window -t :9 bind-key    -T ktm-window-pane    D                      kill-window bind-key    -T ktm-window-pane    H                      select-window -t :- bind-key    -T ktm-window-pane    L                      select-window -t :+ bind-key    -T ktm-window-pane    a                      switch-client -T ktm-window-arrange bind-key    -T ktm-window-pane    b                      break-pane bind-key    -T ktm-window-pane    c                      new-window bind-key    -T ktm-window-pane    d                      kill-pane bind-key    -T ktm-window-pane    h                      select-pane -L bind-key    -T ktm-window-pane    i                      command-prompt -p index "select-window -t \":%%\"" bind-key    -T ktm-window-pane    j                      select-pane -D bind-key    -T ktm-window-pane    k                      select-pane -U bind-key    -T ktm-window-pane    l                      select-pane -R bind-key    -T ktm-window-pane    m                      switch-client -T ktm-window-move bind-key    -T ktm-window-pane    n                      display-panes bind-key    -T ktm-window-pane    o                      last-window bind-key    -T ktm-window-pane    q                      set-option key-table ktm-cmd bind-key    -T ktm-window-pane    r                      set-option key-table ktm-window-resize bind-key    -T ktm-window-pane    s                      switch-client -T ktm-window-split bind-key    -T ktm-window-pane    t                      choose-tree -Zw bind-key    -T ktm-window-pane    z                      resize-pane -Z bind-key    -T ktm-window-pane    M-m                    set-option key-table root bind-key    -T ktm-window-resize  H                      resize-pane -L 5 bind-key    -T ktm-window-resize  J                      resize-pane -D 5 bind-key    -T ktm-window-resize  K                      resize-pane -U 5 bind-key    -T ktm-window-resize  L                      resize-pane -R 5 bind-key    -T ktm-window-resize  h                      resize-pane -L bind-key    -T ktm-window-resize  j                      resize-pane -D bind-key    -T ktm-window-resize  k                      resize-pane -U bind-key    -T ktm-window-resize  l                      resize-pane -R bind-key    -T ktm-window-resize  q                      set-option key-table ktm-cmd bind-key    -T ktm-window-resize  M-m                    set-option key-table root bind-key    -T ktm-window-split   j                      split-window bind-key    -T ktm-window-split   l                      split-window -h bind-key    -T prefix             C-a                    send-prefix bind-key    -T prefix             C-c                    run-shell "tmux save-buffer - | xclip -i -sel clip" bind-key    -T prefix             C-n                    next-window bind-key    -T prefix             C-o                    rotate-window bind-key    -T prefix             C-p                    previous-window bind-key    -T prefix             C-v                    run-shell "tmux set-buffer $(xclip -o -sel clip); tmux paste-buffer" bind-key    -T prefix             C-z                    suspend-client bind-key    -T prefix             Space                  next-layout bind-key    -T prefix             !                      break-pane bind-key    -T prefix             \"                     split-window bind-key    -T prefix             #                     list-buffers bind-key    -T prefix             \$                     command-prompt -I "#S" { rename-session "%%" } bind-key    -T prefix             \%                     split-window -h bind-key    -T prefix             &                      confirm-before -p "kill-window #W? (y/n)" kill-window bind-key    -T prefix             \'                     command-prompt -T window-target -p index { select-window -t ":%%" } bind-key    -T prefix             (                      switch-client -p bind-key    -T prefix             )                      switch-client -n bind-key    -T prefix             ,                      command-prompt -I "#W" { rename-window "%%" } bind-key    -T prefix             -                      delete-buffer bind-key    -T prefix             .                      command-prompt -T target { move-window -t "%%" } bind-key    -T prefix             /                      command-prompt -k -p key { list-keys -1N "%%" } bind-key    -T prefix             0                      select-window -t :=0 bind-key    -T prefix             1                      select-window -t :=1 bind-key    -T prefix             2                      select-window -t :=2 bind-key    -T prefix             3                      select-window -t :=3 bind-key    -T prefix             4                      select-window -t :=4 bind-key    -T prefix             5                      select-window -t :=5 bind-key    -T prefix             6                      select-window -t :=6 bind-key    -T prefix             7                      select-window -t :=7 bind-key    -T prefix             8                      select-window -t :=8 bind-key    -T prefix             9                      select-window -t :=9 bind-key    -T prefix             :                      command-prompt bind-key    -T prefix             \;                     last-pane bind-key    -T prefix             <                      display-menu -T "#[align=centre]#{window_index}:#{window_name}" -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window } bind-key    -T prefix             =                      choose-buffer -Z bind-key    -T prefix             >                      display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -x P -y P "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "#{?mouse_hyperlink,Type #[underscore]#{=/9/...:mouse_hyperlink},}" C-h { copy-mode -q ; send-keys -l "#{q:mouse_hyperlink}" } "#{?mouse_hyperlink,Copy #[underscore]#{=/9/...:mouse_hyperlink},}" h { copy-mode -q ; set-buffer "#{q:mouse_hyperlink}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } bind-key    -T prefix             ?                      list-keys -N bind-key    -T prefix             C                      customize-mode -Z bind-key    -T prefix             D                      choose-client -Z bind-key    -T prefix             E                      select-layout -E bind-key    -T prefix             I                      run-shell /home/rico/.tmux/plugins/tpm/bindings/install_plugins bind-key    -T prefix             L                      switch-client -l bind-key    -T prefix             M                      select-pane -M bind-key    -T prefix             R                      run-shell " \t\t\ttmux source-file /home/rico/.config/tmux/tmux.conf > /dev/null; \t\t\ttmux display-message 'Sourced /home/rico/.config/tmux/tmux.conf!'" bind-key    -T prefix             U                      run-shell /home/rico/.tmux/plugins/tpm/bindings/update_plugins bind-key    -T prefix             [                      copy-mode bind-key    -T prefix             ]                      paste-buffer -p bind-key    -T prefix             c                      new-window bind-key    -T prefix             d                      detach-client bind-key    -T prefix             f                      command-prompt { find-window -Z "%%" } bind-key    -T prefix             i                      display-message bind-key    -T prefix             l                      last-window bind-key    -T prefix             m                      select-pane -m bind-key    -T prefix             n                      next-window bind-key    -T prefix             o                      select-pane -t :.+ bind-key    -T prefix             p                      previous-window bind-key    -T prefix             q                      display-panes bind-key    -T prefix             r                      refresh-client bind-key    -T prefix             s                      choose-tree -Zs bind-key    -T prefix             t                      clock-mode bind-key    -T prefix             w                      choose-tree -Zw bind-key    -T prefix             x                      confirm-before -p "kill-pane #P? (y/n)" kill-pane bind-key    -T prefix             z                      resize-pane -Z bind-key    -T prefix             {                     swap-pane -U bind-key    -T prefix             }                     swap-pane -D bind-key    -T prefix             \~                     show-messages bind-key -r -T prefix             DC                     refresh-client -c bind-key    -T prefix             PPage                  copy-mode -u bind-key -r -T prefix             Up                     select-pane -U bind-key -r -T prefix             Down                   select-pane -D bind-key -r -T prefix             Left                   select-pane -L bind-key -r -T prefix             Right                  select-pane -R bind-key    -T prefix             M-1                    select-layout even-horizontal bind-key    -T prefix             M-2                    select-layout even-vertical bind-key    -T prefix             M-3                    select-layout main-horizontal bind-key    -T prefix             M-4                    select-layout main-vertical bind-key    -T prefix             M-5                    select-layout tiled bind-key    -T prefix             M-n                    next-window -a bind-key    -T prefix             M-o                    rotate-window -D bind-key    -T prefix             M-p                    previous-window -a bind-key    -T prefix             M-u                    run-shell /home/rico/.tmux/plugins/tpm/bindings/clean_plugins bind-key -r -T prefix             M-Up                   resize-pane -U 5 bind-key -r -T prefix             M-Down                 resize-pane -D 5 bind-key -r -T prefix             M-Left                 resize-pane -L 5 bind-key -r -T prefix             M-Right                resize-pane -R 5 bind-key -r -T prefix             C-Up                   resize-pane -U bind-key -r -T prefix             C-Down                 resize-pane -D bind-key -r -T prefix             C-Left                 resize-pane -L bind-key -r -T prefix             C-Right                resize-pane -R bind-key -r -T prefix             S-Up                   refresh-client -U 10 bind-key -r -T prefix             S-Down                 refresh-client -D 10 bind-key -r -T prefix             S-Left                 refresh-client -L 10 bind-key -r -T prefix             S-Right                refresh-client -R 10 bind-key    -T root               MouseDown1Pane         select-pane -t = \; send-keys -M bind-key    -T root               MouseDown1Status       select-window -t = bind-key    -T root               MouseDown2Pane         select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { paste-buffer -p } bind-key    -T root               MouseDown3Pane         if-shell -F -t = "#{||:#{mouse_any_flag},#{&&:#{pane_in_mode},#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}}}" { select-pane -t = ; send-keys -M } { display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "#{?mouse_hyperlink,Type #[underscore]#{=/9/...:mouse_hyperlink},}" C-h { copy-mode -q ; send-keys -l "#{q:mouse_hyperlink}" } "#{?mouse_hyperlink,Copy #[underscore]#{=/9/...:mouse_hyperlink},}" h { copy-mode -q ; set-buffer "#{q:mouse_hyperlink}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } } bind-key    -T root               MouseDown3Status       display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window } bind-key    -T root               MouseDown3StatusLeft   display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n { switch-client -n } Previous p { switch-client -p } '' Renumber N { move-window -r } Rename n { command-prompt -I "#S" { rename-session "%%" } } '' "New Session" s { new-session } "New Window" w { new-window } bind-key    -T root               MouseDrag1Pane         if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -M } bind-key    -T root               MouseDrag1Border       resize-pane -M bind-key    -T root               WheelUpPane            if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -e } bind-key    -T root               WheelUpStatus          previous-window bind-key    -T root               WheelDownStatus        next-window bind-key    -T root               DoubleClick1Pane       select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-word ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel } bind-key    -T root               TripleClick1Pane       select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-line ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel } bind-key    -T root               M-m                    set-option key-table ktm-cmd bind-key    -T root               M-MouseDown3Pane       display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}" < { send-keys -X history-top } "#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}" > { send-keys -X history-bottom } '' "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r { if-shell -F "#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}" "copy-mode -t=" ; send-keys -X -t = search-backward "#{q:mouse_word}" } "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y { copy-mode -q ; send-keys -l "#{q:mouse_word}" } "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c { copy-mode -q ; set-buffer "#{q:mouse_word}" } "#{?mouse_line,Copy Line,}" l { copy-mode -q ; set-buffer "#{q:mouse_line}" } '' "#{?mouse_hyperlink,Type #[underscore]#{=/9/...:mouse_hyperlink},}" C-h { copy-mode -q ; send-keys -l "#{q:mouse_hyperlink}" } "#{?mouse_hyperlink,Copy #[underscore]#{=/9/...:mouse_hyperlink},}" h { copy-mode -q ; set-buffer "#{q:mouse_hyperlink}" } '' "Horizontal Split" h { split-window -h } "Vertical Split" v { split-window -v } '' "#{?#{>:#{window_panes},1},,-}Swap Up" u { swap-pane -U } "#{?#{>:#{window_panes},1},,-}Swap Down" d { swap-pane -D } "#{?pane_marked_set,,-}Swap Marked" s { swap-pane } '' Kill X { kill-pane } Respawn R { respawn-pane -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } "#{?#{>:#{window_panes},1},,-}#{?window_zoomed_flag,Unzoom,Zoom}" z { resize-pane -Z } bind-key    -T root               M-MouseDown3Status     display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window } bind-key    -T root               M-MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y W Next n { switch-client -n } Previous p { switch-client -p } '' Renumber N { move-window -r } Rename n { command-prompt -I "#S" { rename-session "%%" } } '' "New Session" s { new-session } "New Window" w { new-window }

whame commented 5 months ago

From this output, it looks like it should work. For example, what happens if you press M-m followed by w c. A new window should be created, or? Just out of curiosity, what's the output of tmux show-options -g -v status-left (after loading tmux-modal in tmux)?

You can also add set -g @modal-show-cmd-keys on in your .tmux.conf to see the current sequence of keys in the modal mode (see https://github.com/whame/tmux-modal?tab=readme-ov-file#show-command-keys-in-status-bar).

slacksystem commented 4 months ago

It looks like mine was actually a keybinding conflict with tmux-notify. Setting the keybind for tmux-modal to -v fixed it. Not sure why it didn't work with M-v, but it's working now for me

whame commented 4 months ago

Alright, nice! I think we can close this then. Thank you!