zsh?
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?
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?
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
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!
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
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?
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 }
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).
It looks like mine was actually a keybinding conflict with tmux-notify. Setting the keybind for tmux-modal to
Alright, nice! I think we can close this then. Thank you!