* working * ui indication * add keybinding * add to plugin panes * fix with multiple cursors * toggle with the mouse * fix e2e tests and add new one * some cleanups * add to layouts * make mouse click more lenient * allow setting a new floating pane as pinned * make toggle work throughthe command line * add to plugin api * get tests to pass * style(fmt): rustfmt
1147 lines
49 KiB
Rust
1147 lines
49 KiB
Rust
pub fn unlock_first_keybinds(primary_modifier: String, secondary_modifier: String) -> String {
|
|
format!(
|
|
r#"
|
|
default_mode "locked"
|
|
keybinds clear-defaults=true {{
|
|
normal {{
|
|
}}
|
|
locked {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
resize {{
|
|
bind "r" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "p" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "Tab" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Locked"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Locked"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Locked"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Locked"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Locked"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Locked"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Locked"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Locked"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Locked"; }}
|
|
}}
|
|
move {{
|
|
bind "m" {{ SwitchToMode "Normal"; }}
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "t" {{ SwitchToMode "Normal"; }}
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Locked"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Locked"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Locked"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Locked"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Locked"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Locked"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Locked"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Locked"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Locked"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Locked"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Locked"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Locked"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Locked"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Locked"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Locked"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "s" {{ SwitchToMode "Normal"; }}
|
|
bind "e" {{ EditScrollback; SwitchToMode "Locked"; }}
|
|
bind "f" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Locked"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "Alt left" {{ MoveFocusOrTab "left"; SwitchToMode "locked"; }}
|
|
bind "Alt down" {{ MoveFocus "down"; SwitchToMode "locked"; }}
|
|
bind "Alt up" {{ MoveFocus "up"; SwitchToMode "locked"; }}
|
|
bind "Alt right" {{ MoveFocusOrTab "right"; SwitchToMode "locked"; }}
|
|
bind "Alt h" {{ MoveFocusOrTab "left"; SwitchToMode "locked"; }}
|
|
bind "Alt j" {{ MoveFocus "down"; SwitchToMode "locked"; }}
|
|
bind "Alt k" {{ MoveFocus "up"; SwitchToMode "locked"; }}
|
|
bind "Alt l" {{ MoveFocusOrTab "right"; SwitchToMode "locked"; }}
|
|
}}
|
|
search {{
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Locked"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" "Enter" {{ SwitchToMode "Locked"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" "Enter" {{ SwitchToMode "Locked"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "o" {{ SwitchToMode "Normal"; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Locked"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Locked"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Locked"
|
|
}}
|
|
}}
|
|
shared_except "locked" "renametab" "renamepane" {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Locked"; }}
|
|
bind "{primary_modifier} q" {{ Quit; }}
|
|
}}
|
|
shared_except "renamepane" "renametab" "entersearch" "locked" {{
|
|
bind "esc" {{ SwitchToMode "locked"; }}
|
|
}}
|
|
shared_among "normal" "locked" {{
|
|
bind "{secondary_modifier} n" {{ NewPane; }}
|
|
bind "{secondary_modifier} f" {{ ToggleFloatingPanes; }}
|
|
bind "{secondary_modifier} i" {{ MoveTab "Left"; }}
|
|
bind "{secondary_modifier} o" {{ MoveTab "Right"; }}
|
|
bind "{secondary_modifier} h" "{secondary_modifier} Left" {{ MoveFocusOrTab "Left"; }}
|
|
bind "{secondary_modifier} l" "{secondary_modifier} Right" {{ MoveFocusOrTab "Right"; }}
|
|
bind "{secondary_modifier} j" "{secondary_modifier} Down" {{ MoveFocus "Down"; }}
|
|
bind "{secondary_modifier} k" "{secondary_modifier} Up" {{ MoveFocus "Up"; }}
|
|
bind "{secondary_modifier} =" "{secondary_modifier} +" {{ Resize "Increase"; }}
|
|
bind "{secondary_modifier} -" {{ Resize "Decrease"; }}
|
|
bind "{secondary_modifier} [" {{ PreviousSwapLayout; }}
|
|
bind "{secondary_modifier} ]" {{ NextSwapLayout; }}
|
|
}}
|
|
shared_except "locked" "renametab" "renamepane" {{
|
|
bind "Enter" {{ SwitchToMode "Locked"; }}
|
|
}}
|
|
shared_except "pane" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "p" {{ SwitchToMode "Pane"; }}
|
|
}}
|
|
shared_except "resize" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "r" {{ SwitchToMode "Resize"; }}
|
|
}}
|
|
shared_except "scroll" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "s" {{ SwitchToMode "Scroll"; }}
|
|
}}
|
|
shared_except "session" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "o" {{ SwitchToMode "Session"; }}
|
|
}}
|
|
shared_except "tab" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "t" {{ SwitchToMode "Tab"; }}
|
|
}}
|
|
shared_except "move" "locked" "renametab" "renamepane" "entersearch" {{
|
|
bind "m" {{ SwitchToMode "Move"; }}
|
|
}}
|
|
}}"#
|
|
)
|
|
}
|
|
|
|
pub fn default_keybinds(primary_modifier: String, secondary_modifier: String) -> String {
|
|
if primary_modifier.is_empty() && secondary_modifier.is_empty() {
|
|
return default_keybinds_no_modifiers();
|
|
} else if primary_modifier == secondary_modifier {
|
|
return non_colliding_default_keybinds(primary_modifier, secondary_modifier);
|
|
} else if primary_modifier.is_empty() {
|
|
return default_keybinds_no_primary_modifier(secondary_modifier);
|
|
} else if secondary_modifier.is_empty() {
|
|
return default_keybinds_no_secondary_modifier(primary_modifier);
|
|
}
|
|
format!(
|
|
r#"
|
|
default_mode "normal"
|
|
keybinds clear-defaults=true {{
|
|
normal {{}}
|
|
locked {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
resize {{
|
|
bind "{primary_modifier} n" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "p" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Normal"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Normal"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Normal"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Normal"; }}
|
|
}}
|
|
move {{
|
|
bind "{primary_modifier} h" {{ SwitchToMode "Normal"; }}
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Normal"; }}
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Normal"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Normal"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Normal"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Normal"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Normal"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Normal"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Normal"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Normal"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Normal"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Normal"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Normal"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Normal"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Normal"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Normal"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "e" {{ EditScrollback; SwitchToMode "Normal"; }}
|
|
bind "s" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "{secondary_modifier} left" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} down" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} up" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} right" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} h" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} j" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} k" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} l" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
}}
|
|
search {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Normal"; }}
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
}}
|
|
tmux {{
|
|
bind "[" {{ SwitchToMode "Scroll"; }}
|
|
bind "{primary_modifier} b" {{ Write 2; SwitchToMode "Normal"; }}
|
|
bind "\"" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "%" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "z" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "c" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "," {{ SwitchToMode "RenameTab"; }}
|
|
bind "p" {{ GoToPreviousTab; SwitchToMode "Normal"; }}
|
|
bind "n" {{ GoToNextTab; SwitchToMode "Normal"; }}
|
|
bind "Left" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "Right" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "Down" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "Up" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "h" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "l" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "j" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "k" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "o" {{ FocusNextPane; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "Space" {{ NextSwapLayout; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "locked" {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Locked"; }}
|
|
bind "{primary_modifier} q" {{ Quit; }}
|
|
bind "{secondary_modifier} f" {{ ToggleFloatingPanes; }}
|
|
bind "{secondary_modifier} n" {{ NewPane; }}
|
|
bind "{secondary_modifier} i" {{ MoveTab "Left"; }}
|
|
bind "{secondary_modifier} o" {{ MoveTab "Right"; }}
|
|
bind "{secondary_modifier} h" "{secondary_modifier} Left" {{ MoveFocusOrTab "Left"; }}
|
|
bind "{secondary_modifier} l" "{secondary_modifier} Right" {{ MoveFocusOrTab "Right"; }}
|
|
bind "{secondary_modifier} j" "{secondary_modifier} Down" {{ MoveFocus "Down"; }}
|
|
bind "{secondary_modifier} k" "{secondary_modifier} Up" {{ MoveFocus "Up"; }}
|
|
bind "{secondary_modifier} =" "{secondary_modifier} +" {{ Resize "Increase"; }}
|
|
bind "{secondary_modifier} -" {{ Resize "Decrease"; }}
|
|
bind "{secondary_modifier} [" {{ PreviousSwapLayout; }}
|
|
bind "{secondary_modifier} ]" {{ NextSwapLayout; }}
|
|
}}
|
|
shared_except "normal" "locked" {{
|
|
bind "Enter" "Esc" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "pane" "locked" {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Pane"; }}
|
|
}}
|
|
shared_except "resize" "locked" {{
|
|
bind "{primary_modifier} n" {{ SwitchToMode "Resize"; }}
|
|
}}
|
|
shared_except "scroll" "locked" {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
}}
|
|
shared_except "session" "locked" {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Session"; }}
|
|
}}
|
|
shared_except "tab" "locked" {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Tab"; }}
|
|
}}
|
|
shared_except "move" "locked" {{
|
|
bind "{primary_modifier} h" {{ SwitchToMode "Move"; }}
|
|
}}
|
|
shared_except "tmux" "locked" {{
|
|
bind "{primary_modifier} b" {{ SwitchToMode "Tmux"; }}
|
|
}}
|
|
}}
|
|
"#
|
|
)
|
|
}
|
|
|
|
pub fn default_keybinds_no_primary_modifier(secondary_modifier: String) -> String {
|
|
format!(
|
|
r#"
|
|
default_mode "normal"
|
|
keybinds clear-defaults=true {{
|
|
normal {{}}
|
|
locked {{}}
|
|
resize {{
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "p" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Normal"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Normal"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Normal"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Normal"; }}
|
|
}}
|
|
move {{
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Normal"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Normal"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Normal"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Normal"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Normal"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Normal"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Normal"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Normal"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Normal"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Normal"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Normal"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Normal"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Normal"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Normal"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "e" {{ EditScrollback; SwitchToMode "Normal"; }}
|
|
bind "s" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "{secondary_modifier} left" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} down" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} up" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} right" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} h" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} j" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} k" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} l" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
}}
|
|
search {{
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
}}
|
|
tmux {{
|
|
bind "[" {{ SwitchToMode "Scroll"; }}
|
|
bind "\"" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "%" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "z" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "c" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "," {{ SwitchToMode "RenameTab"; }}
|
|
bind "p" {{ GoToPreviousTab; SwitchToMode "Normal"; }}
|
|
bind "n" {{ GoToNextTab; SwitchToMode "Normal"; }}
|
|
bind "Left" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "Right" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "Down" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "Up" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "h" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "l" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "j" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "k" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "o" {{ FocusNextPane; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "Space" {{ NextSwapLayout; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "locked" {{
|
|
bind "{secondary_modifier} n" {{ NewPane; }}
|
|
bind "{secondary_modifier} f" {{ ToggleFloatingPanes; }}
|
|
bind "{secondary_modifier} i" {{ MoveTab "Left"; }}
|
|
bind "{secondary_modifier} o" {{ MoveTab "Right"; }}
|
|
bind "{secondary_modifier} h" "{secondary_modifier} Left" {{ MoveFocusOrTab "Left"; }}
|
|
bind "{secondary_modifier} l" "{secondary_modifier} Right" {{ MoveFocusOrTab "Right"; }}
|
|
bind "{secondary_modifier} j" "{secondary_modifier} Down" {{ MoveFocus "Down"; }}
|
|
bind "{secondary_modifier} k" "{secondary_modifier} Up" {{ MoveFocus "Up"; }}
|
|
bind "{secondary_modifier} =" "{secondary_modifier} +" {{ Resize "Increase"; }}
|
|
bind "{secondary_modifier} -" {{ Resize "Decrease"; }}
|
|
bind "{secondary_modifier} [" {{ PreviousSwapLayout; }}
|
|
bind "{secondary_modifier} ]" {{ NextSwapLayout; }}
|
|
}}
|
|
shared_except "normal" "locked" {{
|
|
bind "Enter" "Esc" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
}}
|
|
"#
|
|
)
|
|
}
|
|
|
|
pub fn default_keybinds_no_secondary_modifier(primary_modifier: String) -> String {
|
|
format!(
|
|
r#"
|
|
default_mode "normal"
|
|
keybinds clear-defaults=true {{
|
|
normal {{}}
|
|
locked {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
resize {{
|
|
bind "{primary_modifier} n" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "p" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Normal"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Normal"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Normal"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Normal"; }}
|
|
}}
|
|
move {{
|
|
bind "{primary_modifier} h" {{ SwitchToMode "Normal"; }}
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Normal"; }}
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Normal"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Normal"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Normal"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Normal"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Normal"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Normal"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Normal"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Normal"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Normal"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Normal"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Normal"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Normal"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Normal"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Normal"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "e" {{ EditScrollback; SwitchToMode "Normal"; }}
|
|
bind "s" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
}}
|
|
search {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Normal"; }}
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
}}
|
|
tmux {{
|
|
bind "[" {{ SwitchToMode "Scroll"; }}
|
|
bind "{primary_modifier} b" {{ Write 2; SwitchToMode "Normal"; }}
|
|
bind "\"" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "%" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "z" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "c" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "," {{ SwitchToMode "RenameTab"; }}
|
|
bind "p" {{ GoToPreviousTab; SwitchToMode "Normal"; }}
|
|
bind "n" {{ GoToNextTab; SwitchToMode "Normal"; }}
|
|
bind "Left" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "Right" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "Down" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "Up" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "h" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "l" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "j" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "k" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "o" {{ FocusNextPane; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "Space" {{ NextSwapLayout; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "locked" {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Locked"; }}
|
|
bind "{primary_modifier} q" {{ Quit; }}
|
|
}}
|
|
shared_except "normal" "locked" {{
|
|
bind "Enter" "Esc" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "pane" "locked" {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Pane"; }}
|
|
}}
|
|
shared_except "resize" "locked" {{
|
|
bind "{primary_modifier} n" {{ SwitchToMode "Resize"; }}
|
|
}}
|
|
shared_except "scroll" "locked" {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
}}
|
|
shared_except "session" "locked" {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Session"; }}
|
|
}}
|
|
shared_except "tab" "locked" {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Tab"; }}
|
|
}}
|
|
shared_except "move" "locked" {{
|
|
bind "{primary_modifier} h" {{ SwitchToMode "Move"; }}
|
|
}}
|
|
shared_except "tmux" "locked" {{
|
|
bind "{primary_modifier} b" {{ SwitchToMode "Tmux"; }}
|
|
}}
|
|
}}
|
|
"#
|
|
)
|
|
}
|
|
|
|
pub fn default_keybinds_no_modifiers() -> String {
|
|
format!(
|
|
r#"
|
|
default_mode "normal"
|
|
keybinds clear-defaults=true {{
|
|
normal {{}}
|
|
locked {{}}
|
|
resize {{
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "p" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Normal"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Normal"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Normal"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Normal"; }}
|
|
}}
|
|
move {{
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Normal"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Normal"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Normal"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Normal"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Normal"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Normal"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Normal"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Normal"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Normal"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Normal"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Normal"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Normal"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Normal"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Normal"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "e" {{ EditScrollback; SwitchToMode "Normal"; }}
|
|
bind "s" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
}}
|
|
search {{
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
}}
|
|
tmux {{
|
|
bind "[" {{ SwitchToMode "Scroll"; }}
|
|
bind "\"" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "%" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "z" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "c" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "," {{ SwitchToMode "RenameTab"; }}
|
|
bind "p" {{ GoToPreviousTab; SwitchToMode "Normal"; }}
|
|
bind "n" {{ GoToNextTab; SwitchToMode "Normal"; }}
|
|
bind "Left" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "Right" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "Down" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "Up" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "h" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "l" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "j" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "k" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "o" {{ FocusNextPane; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "Space" {{ NextSwapLayout; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "normal" "locked" {{
|
|
bind "Enter" "Esc" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
}}
|
|
"#
|
|
)
|
|
}
|
|
|
|
pub fn non_colliding_default_keybinds(
|
|
primary_modifier: String,
|
|
secondary_modifier: String,
|
|
) -> String {
|
|
format!(
|
|
r#"
|
|
default_mode "normal"
|
|
keybinds clear-defaults=true {{
|
|
normal {{}}
|
|
locked {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
resize {{
|
|
bind "{primary_modifier} r" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ Resize "Increase Left"; }}
|
|
bind "j" "Down" {{ Resize "Increase Down"; }}
|
|
bind "k" "Up" {{ Resize "Increase Up"; }}
|
|
bind "l" "Right" {{ Resize "Increase Right"; }}
|
|
bind "H" {{ Resize "Decrease Left"; }}
|
|
bind "J" {{ Resize "Decrease Down"; }}
|
|
bind "K" {{ Resize "Decrease Up"; }}
|
|
bind "L" {{ Resize "Decrease Right"; }}
|
|
bind "=" "+" {{ Resize "Increase"; }}
|
|
bind "-" {{ Resize "Decrease"; }}
|
|
}}
|
|
pane {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Normal"; }}
|
|
bind "h" "Left" {{ MoveFocus "Left"; }}
|
|
bind "l" "Right" {{ MoveFocus "Right"; }}
|
|
bind "j" "Down" {{ MoveFocus "Down"; }}
|
|
bind "k" "Up" {{ MoveFocus "Up"; }}
|
|
bind "p" {{ SwitchFocus; }}
|
|
bind "n" {{ NewPane; SwitchToMode "Normal"; }}
|
|
bind "d" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "r" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
bind "f" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "z" {{ TogglePaneFrames; SwitchToMode "Normal"; }}
|
|
bind "w" {{ ToggleFloatingPanes; SwitchToMode "Normal"; }}
|
|
bind "e" {{ TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }}
|
|
bind "c" {{ SwitchToMode "RenamePane"; PaneNameInput 0;}}
|
|
bind "i" {{ TogglePanePinned; SwitchToMode "Normal"; }}
|
|
}}
|
|
move {{
|
|
bind "{primary_modifier} m" {{ SwitchToMode "Normal"; }}
|
|
bind "n" "Tab" {{ MovePane; }}
|
|
bind "p" {{ MovePaneBackwards; }}
|
|
bind "h" "Left" {{ MovePane "Left"; }}
|
|
bind "j" "Down" {{ MovePane "Down"; }}
|
|
bind "k" "Up" {{ MovePane "Up"; }}
|
|
bind "l" "Right" {{ MovePane "Right"; }}
|
|
}}
|
|
tab {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Normal"; }}
|
|
bind "r" {{ SwitchToMode "RenameTab"; TabNameInput 0; }}
|
|
bind "h" "Left" "Up" "k" {{ GoToPreviousTab; }}
|
|
bind "l" "Right" "Down" "j" {{ GoToNextTab; }}
|
|
bind "n" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "x" {{ CloseTab; SwitchToMode "Normal"; }}
|
|
bind "s" {{ ToggleActiveSyncTab; SwitchToMode "Normal"; }}
|
|
bind "b" {{ BreakPane; SwitchToMode "Normal"; }}
|
|
bind "]" {{ BreakPaneRight; SwitchToMode "Normal"; }}
|
|
bind "[" {{ BreakPaneLeft; SwitchToMode "Normal"; }}
|
|
bind "1" {{ GoToTab 1; SwitchToMode "Normal"; }}
|
|
bind "2" {{ GoToTab 2; SwitchToMode "Normal"; }}
|
|
bind "3" {{ GoToTab 3; SwitchToMode "Normal"; }}
|
|
bind "4" {{ GoToTab 4; SwitchToMode "Normal"; }}
|
|
bind "5" {{ GoToTab 5; SwitchToMode "Normal"; }}
|
|
bind "6" {{ GoToTab 6; SwitchToMode "Normal"; }}
|
|
bind "7" {{ GoToTab 7; SwitchToMode "Normal"; }}
|
|
bind "8" {{ GoToTab 8; SwitchToMode "Normal"; }}
|
|
bind "9" {{ GoToTab 9; SwitchToMode "Normal"; }}
|
|
bind "Tab" {{ ToggleTab; }}
|
|
}}
|
|
scroll {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "e" {{ EditScrollback; SwitchToMode "Normal"; }}
|
|
bind "s" {{ SwitchToMode "EnterSearch"; SearchInput 0; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "{secondary_modifier} left" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} down" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} up" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} right" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} h" {{ MoveFocusOrTab "left"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} j" {{ MoveFocus "down"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} k" {{ MoveFocus "up"; SwitchToMode "normal"; }}
|
|
bind "{secondary_modifier} l" {{ MoveFocusOrTab "right"; SwitchToMode "normal"; }}
|
|
}}
|
|
search {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Normal"; }}
|
|
bind "Ctrl c" {{ ScrollToBottom; SwitchToMode "Normal"; }}
|
|
bind "j" "Down" {{ ScrollDown; }}
|
|
bind "k" "Up" {{ ScrollUp; }}
|
|
bind "Ctrl f" "PageDown" "Right" "l" {{ PageScrollDown; }}
|
|
bind "Ctrl b" "PageUp" "Left" "h" {{ PageScrollUp; }}
|
|
bind "d" {{ HalfPageScrollDown; }}
|
|
bind "u" {{ HalfPageScrollUp; }}
|
|
bind "n" {{ Search "down"; }}
|
|
bind "p" {{ Search "up"; }}
|
|
bind "c" {{ SearchToggleOption "CaseSensitivity"; }}
|
|
bind "w" {{ SearchToggleOption "Wrap"; }}
|
|
bind "o" {{ SearchToggleOption "WholeWord"; }}
|
|
}}
|
|
entersearch {{
|
|
bind "Ctrl c" "Esc" {{ SwitchToMode "Scroll"; }}
|
|
bind "Enter" {{ SwitchToMode "Search"; }}
|
|
}}
|
|
renametab {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenameTab; SwitchToMode "Tab"; }}
|
|
}}
|
|
renamepane {{
|
|
bind "Ctrl c" {{ SwitchToMode "Normal"; }}
|
|
bind "Esc" {{ UndoRenamePane; SwitchToMode "Pane"; }}
|
|
}}
|
|
session {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Normal"; }}
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "w" {{
|
|
LaunchOrFocusPlugin "session-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "c" {{
|
|
LaunchOrFocusPlugin "configuration" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
bind "p" {{
|
|
LaunchOrFocusPlugin "plugin-manager" {{
|
|
floating true
|
|
move_to_focused_tab true
|
|
}};
|
|
SwitchToMode "Normal"
|
|
}}
|
|
}}
|
|
tmux {{
|
|
bind "[" {{ SwitchToMode "Scroll"; }}
|
|
bind "{primary_modifier} b" {{ Write 2; SwitchToMode "Normal"; }}
|
|
bind "\"" {{ NewPane "Down"; SwitchToMode "Normal"; }}
|
|
bind "%" {{ NewPane "Right"; SwitchToMode "Normal"; }}
|
|
bind "z" {{ ToggleFocusFullscreen; SwitchToMode "Normal"; }}
|
|
bind "c" {{ NewTab; SwitchToMode "Normal"; }}
|
|
bind "," {{ SwitchToMode "RenameTab"; }}
|
|
bind "p" {{ GoToPreviousTab; SwitchToMode "Normal"; }}
|
|
bind "n" {{ GoToNextTab; SwitchToMode "Normal"; }}
|
|
bind "Left" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "Right" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "Down" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "Up" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "h" {{ MoveFocus "Left"; SwitchToMode "Normal"; }}
|
|
bind "l" {{ MoveFocus "Right"; SwitchToMode "Normal"; }}
|
|
bind "j" {{ MoveFocus "Down"; SwitchToMode "Normal"; }}
|
|
bind "k" {{ MoveFocus "Up"; SwitchToMode "Normal"; }}
|
|
bind "o" {{ FocusNextPane; }}
|
|
bind "d" {{ Detach; }}
|
|
bind "Space" {{ NextSwapLayout; }}
|
|
bind "x" {{ CloseFocus; SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "locked" {{
|
|
bind "{primary_modifier} g" {{ SwitchToMode "Locked"; }}
|
|
bind "{primary_modifier} q" {{ Quit; }}
|
|
bind "{secondary_modifier} f" {{ ToggleFloatingPanes; }}
|
|
bind "{secondary_modifier} n" {{ NewPane; }}
|
|
bind "{secondary_modifier} i" {{ MoveTab "Left"; }}
|
|
bind "{secondary_modifier} o" {{ MoveTab "Right"; }}
|
|
bind "{secondary_modifier} h" "{secondary_modifier} Left" {{ MoveFocusOrTab "Left"; }}
|
|
bind "{secondary_modifier} l" "{secondary_modifier} Right" {{ MoveFocusOrTab "Right"; }}
|
|
bind "{secondary_modifier} j" "{secondary_modifier} Down" {{ MoveFocus "Down"; }}
|
|
bind "{secondary_modifier} k" "{secondary_modifier} Up" {{ MoveFocus "Up"; }}
|
|
bind "{secondary_modifier} =" "{secondary_modifier} +" {{ Resize "Increase"; }}
|
|
bind "{secondary_modifier} -" {{ Resize "Decrease"; }}
|
|
bind "{secondary_modifier} [" {{ PreviousSwapLayout; }}
|
|
bind "{secondary_modifier} ]" {{ NextSwapLayout; }}
|
|
}}
|
|
shared_except "normal" "locked" {{
|
|
bind "Enter" "Esc" {{ SwitchToMode "Normal"; }}
|
|
}}
|
|
shared_except "pane" "locked" {{
|
|
bind "{primary_modifier} p" {{ SwitchToMode "Pane"; }}
|
|
}}
|
|
shared_except "resize" "locked" {{
|
|
bind "{primary_modifier} r" {{ SwitchToMode "Resize"; }}
|
|
}}
|
|
shared_except "scroll" "locked" {{
|
|
bind "{primary_modifier} s" {{ SwitchToMode "Scroll"; }}
|
|
}}
|
|
shared_except "session" "locked" "tab" {{
|
|
bind "{primary_modifier} o" {{ SwitchToMode "Session"; }}
|
|
}}
|
|
shared_except "tab" "locked" {{
|
|
bind "{primary_modifier} t" {{ SwitchToMode "Tab"; }}
|
|
}}
|
|
shared_except "move" "locked" {{
|
|
bind "{primary_modifier} m" {{ SwitchToMode "Move"; }}
|
|
}}
|
|
shared_except "tmux" "locked" {{
|
|
bind "{primary_modifier} b" {{ SwitchToMode "Tmux"; }}
|
|
}}
|
|
}}
|
|
"#
|
|
)
|
|
}
|