Here’s the official documentation on configuring kitty’s modal mappings.

I made this to explore its uses but also because sometimes my fingers trigger the wrong reflex macro and I accidentally change my layout or alter the window size. This guards against that by literally guarding that behavior behind a key combo that puts me into the express context for altering my window/tab layout and arrangement.

To not clutter up your main config, I recommend saving this to its own file and using the include directive to bring it in.

EDIT: learned that you can map the combo that enters the mode to get out of the mode

kitty-mode-window-tab-arrangement (WTA):

map --new-mode WTA kitty_mod+space>kitty_mod+space 

map --mode WTA kitty_mod+space>kitty_mod+space pop_keyboard_mode
map --mode WTA esc    pop_keyboard_mode
map --mode WTA ctrl+c pop_keyboard_mode


# Windows

#navigation
map --mode WTA h    neighboring_window left
map --mode WTA a    neighboring_window left
map --mode WTA left neighboring_window left

map --mode WTA j    neighboring_window down
map --mode WTA s    neighboring_window down
map --mode WTA down neighboring_window down

map --mode WTA k  neighboring_window up
map --mode WTA w  neighboring_window up
map --mode WTA up neighboring_window up

map --mode WTA l     neighboring_window right
map --mode WTA d     neighboring_window right
map --mode WTA right neighboring_window right

map --mode WTA f focus_visible_window

#resize
map --mode WTA alt+h    resize_window narrower
map --mode WTA alt+a    resize_window narrower
map --mode WTA alt+left resize_window narrower

map --mode WTA alt+l     resize_window wider
map --mode WTA alt+d     resize_window wider
map --mode WTA alt+right resize_window wider

map --mode WTA alt+k  resize_window taller
map --mode WTA alt+w  resize_window taller
map --mode WTA alt+up resize_window taller

map --mode WTA alt+j    resize_window shorter
map --mode WTA alt+s    resize_window shorter
map --mode WTA alt+down resize_window shorter

map --mode WTA ctrl+home resize_window reset
map --mode WTA ctrl+r    resize_window reset

#arrange
map --mode WTA shift+h    move_window left
map --mode WTA shift+a    move_window left
map --mode WTA shift+left move_window left

map --mode WTA shift+l     move_window right
map --mode WTA shift+d     move_window right
map --mode WTA shift+right move_window right

map --mode WTA shift+j    move_window down
map --mode WTA shift+s    move_window down
map --mode WTA shift+down move_window down

map --mode WTA shift+k  move_window up
map --mode WTA shift+w  move_window up
map --mode WTA shift+up move_window up

map --mode WTA shift+m swap_with_window
# have to pop_keyboard_mode here to enable answering question
map --mode WTA shift+t combine : detach_window ask : pop_keyboard_mode
map --mode WTA shift+n combine : detach_tab ask    : pop_keyboard_mode


# Tabs

map --mode WTA shift+alt+]     move_tab_forward
map --mode WTA shift+alt+right move_tab_forward
map --mode WTA shift+alt+l     move_tab_forward
map --mode WTA shift+alt+d     move_tab_forward

map --mode WTA shift+alt+[    move_tab_backward
map --mode WTA shift+alt+left move_tab_backward
map --mode WTA shift+alt+h    move_tab_backward
map --mode WTA shift+alt+a    move_tab_backward


# Close others

map --mode WTA ctrl+x>w close_other_windows_in_tab
map --mode WTA ctrl+x>t close_other_tabs_in_os_window
map --mode WTA ctrl+x>o close_other_os_windows



# Layout actions

enabled_layouts tall:mirrored=true,fat,splits:split_axis=horizontal,splits:split_axis=vertical,grid,horizontal,vertical,stack,tall,fat:mirrored=true

map --mode WTA ctrl+alt+7      goto_layout   tall
map --mode WTA kitty_mod+alt+7 toggle_layout tall:mirrored=true
map --mode WTA ctrl+alt+g      goto_layout   grid
map --mode WTA ctrl+alt+w      goto_layout   fat
map --mode WTA kitty_mod+alt+w toggle_layout fat:mirrored=true
map --mode WTA ctrl+alt+v      goto_layout   vertical
map --mode WTA ctrl+alt+h      goto_layout   horizontal
map --mode WTA ctrl+alt+z      toggle_layout stack
map --mode WTA ctrl+alt+y      toggle_layout splits:split_axis=horizontal
map --mode WTA kitty_mod+alt+y toggle_layout splits:split_axis=vertical

map --mode WTA ctrl+alt+, last_used_layout

# control number of main windows
action_alias increase_main layout_action increase_num_full_size_windows
map --mode WTA ctrl+]     increase_main
map --mode WTA ctrl+up    increase_main
map --mode WTA ctrl+right increase_main
map --mode WTA ctrl+l     increase_main
map --mode WTA ctrl+w     increase_main
map --mode WTA ctrl+d     increase_main

action_alias decrease_main layout_action decrease_num_full_size_windows
map --mode WTA ctrl+[    decrease_main
map --mode WTA ctrl+down decrease_main
map --mode WTA ctrl+left decrease_main
map --mode WTA ctrl+h    decrease_main
map --mode WTA ctrl+s    decrease_main
map --mode WTA ctrl+a    decrease_main

# increase main bias
action_alias increase_bias layout_action bias 50 66 75 90
map --mode WTA kitty_mod+]     increase_bias
map --mode WTA kitty_mod+up    increase_bias
map --mode WTA kitty_mod+right increase_bias
map --mode WTA kitty_mod+l     increase_bias
map --mode WTA kitty_mod+w     increase_bias
map --mode WTA kitty_mod+d     increase_bias

# decrease main bias
action_alias decrease_bias layout_action bias 50 33 25 10
map --mode WTA kitty_mod+[    decrease_bias
map --mode WTA kitty_mod+down decrease_bias
map --mode WTA kitty_mod+left decrease_bias
map --mode WTA kitty_mod+h    decrease_bias
map --mode WTA kitty_mod+s    decrease_bias
map --mode WTA kitty_mod+a    decrease_bias
  • SmokeInFog@midwest.socialOPM
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    5 months ago

    Also created one for marks (kmks is “kitty marks” abbreviated). Still working out some kinks with the remote script but that’s unrelated to the mappings [EDIT fixed it]:

    map --new-mode kmks kitty_mod+m>kitty_mod+m
    
    map --mode kmks kitty_mod+m>kitty_mod+m pop_keyboard_mode
    map --mode kmks esc    pop_keyboard_mode
    map --mode kmks ctrl+c pop_keyboard_mode
    
    # Create / remove
    map --mode kmks space combine : create_marker : pop_keyboard_mode
    map --mode kmks r combine : remove_marker : pop_keyboard_mode
    
    
    # pre-defined
    
    # shift
    map --mode kmks shift+s combine : toggle_marker iregex 1 (success)|(2[0-9]{2}) : pop_keyboard_mode
    map --mode kmks shift+w combine : toggle_marker iregex 2 (warning|request|response|query) : pop_keyboard_mode
    map --mode kmks shift+e combine : toggle_marker iregex 3 (exception|error)|(5[0-9]{2}|4[0-9]{2}) : pop_keyboard_mode
    # all
    map --mode kmks shift+a combine : toggle_marker iregex 1 (success)|(2[0-9]{2}) 2 (warning|request|response|query) 3 (exception|error)|(5[0-9]{2}|4[0-9]{2}) : pop_keyboard_mode
    
    
    # Highlight/color tabs
    
    # highlight
    map --mode kmks shift+alt+h>l combine : remote_control set-tab-color active_fg=NONE active_bg=NONE inactive_fg=white inactive_bg=darkorange : pop_keyboard_mode
    # side tab
    map --mode kmks shift+alt+s>t combine : remote_control set-tab-color active_fg=NONE active_bg=NONE inactive_fg=white inactive_bg=#010C6B : pop_keyboard_mode
    # background tab
    map --mode kmks shift+alt+b>t combine : remote_control set-tab-color active_fg=NONE active_bg=NONE inactive_fg=#999999 inactive_bg=black : pop_keyboard_mode
    # customize tab
    map --mode kmks shift+alt+c>t combine : launch --type overlay --title "pick tab colors" --allow-remote-control $HOME/.config/kitty/scripts/highlight-tab : pop_keyboard_mode
    # reset tab
    map --mode kmks shift+alt+r   combine : remote_control set-tab-color active_fg=NONE active_bg=NONE inactive_fg=NONE inactive_bg=NONE : pop_keyboard_mode