Files
kitty-config/kitty.conf
T
rootiest 9d34764815 feat(watcher): add scrollback history logging on window/pane close
Introduces watcher.py — a kitty Python watcher that captures terminal
scrollback to ~/.terminal_history/ whenever any window or pane is closed
via Ctrl+D, keybind, or full kitty quit. Works alongside the fish
smart_exit function, which handles graceful shell exits and sets a
user var flag to prevent duplicate logs.

Fixes the kitty.conf watcher directive (removed invalid --type=global
prefix that caused a FileNotFoundError on every kitty startup).
2026-05-30 23:40:53 -04:00

207 lines
8.0 KiB
Plaintext

# vim:fileencoding=utf-8:foldmethod=marker
startup_session ~/.config/kitty/default.session
# {{{ General
editor nvim
shell_integration enabled
kitty_mod ctrl+shift
scrollback_lines 10000
notify_on_cmd_finish never
copy_on_select yes
# }}}
# {{{ Watcher
watcher watcher.py
# }}}
# {{{ Window
remember_window_size no
initial_window_width 150c
initial_window_height 31c
enabled_layouts splits
# }}}
# {{{ Appearance
linux_display_server wayland
background_opacity 0.85
background_blur 64
dynamic_background_opacity yes
cursor_beam_thickness 1.75
cursor_trail 3
# }}}
# {{{ Remote Control
allow_remote_control yes
listen_on unix:@mykitty
allow_cloning yes
# }}}
# {{{ Font
font_size 13
font_family family='Iosevka Rootiest v2' postscript_name=Iosevka-Rootiest-v2 style=Regular
bold_font family='Iosevka Rootiest v2' postscript_name=Iosevka-Rootiest-v2 style='ExtraBold'
italic_font family='Iosevka Rootiest v2' postscript_name=Iosevka-Rootiest-v2 style='Italic'
bold_italic_font family='Iosevka Rootiest v2' postscript_name=Iosevka-Rootiest-v2 style='ExtraBold Italic'
font_features IosevkaRootiestV2NF ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
font_features IosevkaRootiestV2NF-ExtraBold ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
font_features IosevkaRootiestV2NF-Italic ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
font_features IosevkaRootiestV2NF-ExtraBoldItalic ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
# {{{ Tab Bar
tab_bar_style powerline
tab_powerline_style angled
tab_bar_align left
tab_bar_edge top
tab_bar_min_tabs 1
tab_activity_symbol "󱐋 "
tab_title_template "{fmt.fg._f9e2ae}{bell_symbol}{activity_symbol}{fmt.fg.default}{tab.progress_percent}{fmt.fg.tab}{index}:{'🇿' if layout_name == 'stack' and num_windows > 1 else ''}{title}"
# }}}
# {{{ Aliases
action_alias launch_tab launch --type=tab --cwd=current
action_alias launch_win launch --type=window --cwd=current
action_alias view_scrollback launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
action_alias kitty_scrollback_nvim kitten ~/.local/share/nvim/site/pack/core/opt/kitty-scrollback/python/kitty_scrollback_nvim.py }}}
# {{{ Keymaps
# Markers
map f2 remove_marker
map f3 toggle_marker itext 2 ERROR 1 WARNING 3 PASS
# Splits
map f4 launch --location=split
map f5 launch --location=hsplit
map f6 launch --location=vsplit
map f7 layout_action rotate
# Tabs
map kitty_mod+right next_tab
map ctrl+tab next_tab
map kitty_mod+q close_tab
# Launch
map f8 launch_tab nvim
map kitty_mod+n launch_tab nvim
map kitty_mod+F1 kitten keymap.py
# Session
map f11 launch --type=background ~/.config/kitty/save_session/save_session.sh
map f12 load_config_file
# Clipboard
map kitty_mod+c copy_to_clipboard
map kitty_mod+v paste_from_clipboard
map kitty_mod+s paste_from_selection
map shift+insert paste_from_selection
map kitty_mod+o pass_selection_to_program
# Text manipulation
map f7 clear_selection
# Window movement
map shift+up move_window up
map shift+down move_window down
map shift+left move_window left
map shift+right move_window right
map alt+shift+k move_window up
map alt+shift+j move_window down
map alt+shift+h move_window left
map alt+shift+l move_window right
map --when-focus-on var:IS_NVIM alt+shift+k
map --when-focus-on var:IS_NVIM alt+shift+j
map --when-focus-on var:IS_NVIM alt+shift+h
map --when-focus-on var:IS_NVIM alt+shift+l
# Window resize
map alt+k kitten relative_resize.py up 3
map alt+j kitten relative_resize.py down 3
map alt+h kitten relative_resize.py left 3
map alt+l kitten relative_resize.py right 3
map --when-focus-on var:IS_NVIM alt+k
map --when-focus-on var:IS_NVIM alt+j
map --when-focus-on var:IS_NVIM alt+h
map --when-focus-on var:IS_NVIM alt+l
map alt+r start_resizing_window
map --when-focus-on var:IS_NVIM alt+r
# Detach windows
map kitty_mod+f2 detach_window
map kitty_mod+f3 detach_window new-tab
map ctrl+f4 detach_window tab-prev
# Search
# map kitty_mod+/ launch --location=hsplit --allow-remote-control kitty +kitten kitty_search/search.py @active-kitty-window-id
map kitty_mod+/ search_scrollback
# Nvim navigation
map ctrl+shift+h neighboring_window left
map ctrl+shift+j neighboring_window down
map ctrl+shift+k neighboring_window up
map ctrl+shift+l neighboring_window right
map --when-focus-on var:IS_NVIM ctrl+shift+h
map --when-focus-on var:IS_NVIM ctrl+shift+j
map --when-focus-on var:IS_NVIM ctrl+shift+k
map --when-focus-on var:IS_NVIM ctrl+shift+l
# Scrollback (kitty-scrollback.nvim)
map f1 kitty_scrollback_nvim --nvim-args -n -c "normal /"
map kitty_mod+b kitty_scrollback_nvim --config ksb_builtin_last_cmd_output
mouse_map kitty_mod+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output
# }}}
# {{{ Theme: Catppuccin Mocha
env KITTY_THEME=catppuccin-mocha
env CATPPUCCIN_PALETTE=mocha
env CATPPUCCIN_ACCENT=mauve
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
cursor #f5e0dc
cursor_text_color #1e1e2e
url_color #f5e0dc
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
wayland_titlebar_color system
macos_titlebar_color system
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #1e1e2e
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
color0 #45475a
color8 #585b70
color1 #f38ba8
color9 #f38ba8
color2 #a6e3a1
color10 #a6e3a1
color3 #f9e2af
color11 #f9e2af
color4 #89b4fa
color12 #89b4fa
color5 #f5c2e7
color13 #f5c2e7
color6 #94e2d5
color14 #94e2d5
color7 #bac2de
color15 #a6adc8
# }}}