Skip to content

Latest commit

 

History

History
796 lines (560 loc) · 25.3 KB

kitty.org

File metadata and controls

796 lines (560 loc) · 25.3 KB

~/.config/kitty/kitty.conf

Kitty

Setup for the kitty terminal

# vim:fileencoding=utf-8:ft=conf:foldmethod=marker

#: Fonts {{{
font_family      Iosevka
bold_font        auto
italic_font      auto
bold_italic_font auto

font_size 12.0

adjust_line_height  0
adjust_column_width 0

disable_ligatures never

#: }}}

#: Cursor customization {{{

cursor #cccccc

cursor_text_color #111111

cursor_shape block

cursor_blink_interval 0

#: }}}

#: Scrollback {{{

scrollback_lines 2000

#: Number of lines of history to keep in memory for scrolling back.
#: Memory is allocated on demand. Negative numbers are (effectively)
#: infinite scrollback. Note that using very large scrollback is not
#: recommended as it can slow down resizing of the terminal and also
#: use large amounts of RAM.

scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER

#: Program with which to view scrollback in a new window. The
#: scrollback buffer is passed as STDIN to this program. If you change
#: it, make sure the program you use can handle ANSI escape sequences
#: for colors and text formatting. INPUT_LINE_NUMBER in the command
#: line above will be replaced by an integer representing which line
#: should be at the top of the screen.

scrollback_pager_history_size 0

#: Separate scrollback history size, used only for browsing the
#: scrollback buffer (in MB). This separate buffer is not available
#: for interactive scrolling but will be piped to the pager program
#: when viewing scrollback buffer in a separate window. The current
#: implementation stores one character in 4 bytes, so approximatively
#: 2500 lines per megabyte at 100 chars per line. A value of zero or
#: less disables this feature. The maximum allowed size is 4GB.

wheel_scroll_multiplier 5.0

#: Modify the amount scrolled by the mouse wheel. Note this is only
#: used for low precision scrolling devices, not for high precision
#: scrolling on platforms such as macOS and Wayland. Use negative
#: numbers to change scroll direction.

touch_scroll_multiplier 1.0

#: Modify the amount scrolled by a touchpad. Note this is only used
#: for high precision scrolling devices on platforms such as macOS and
#: Wayland. Use negative numbers to change scroll direction.

#: }}}

#: Mouse {{{

mouse_hide_wait 3.0

#: Hide mouse cursor after the specified number of seconds of the
#: mouse not being used. Set to zero to disable mouse cursor hiding.
#: Set to a negative value to hide the mouse cursor immediately when
#: typing text. Disabled by default on macOS as getting it to work
#: robustly with the ever-changing sea of bugs that is Cocoa is too
#: much effort.

url_color #0087bd
url_style curly

#: The color and style for highlighting URLs on mouse-over. url_style
#: can be one of: none, single, double, curly

open_url_modifiers kitty_mod

#: The modifier keys to press when clicking with the mouse on URLs to
#: open the URL

open_url_with default

#: The program with which to open URLs that are clicked on. The
#: special value default means to use the operating system's default
#: URL handler.

copy_on_select no

#: Copy to clipboard or a private buffer on select. With this set to
#: clipboard, simply selecting text with the mouse will cause the text
#: to be copied to clipboard. Useful on platforms such as macOS that
#: do not have the concept of primary selections. You can instead
#: specify a name such as a1 to copy to a private kitty buffer
#: instead. Map a shortcut with the paste_from_buffer action to paste
#: from this private buffer. For example::

#:     map cmd+shift+v paste_from_buffer a1

#: Note that copying to the clipboard is a security risk, as all
#: programs, including websites open in your browser can read the
#: contents of the system clipboard.

strip_trailing_spaces never

#: Remove spaces at the end of lines when copying to clipboard. A
#: value of smart will do it when using normal selections, but not
#: rectangle selections. always will always do it.

rectangle_select_modifiers ctrl+alt

#: The modifiers to use rectangular selection (i.e. to select text in
#: a rectangular block with the mouse)

terminal_select_modifiers shift

#: The modifiers to override mouse selection even when a terminal
#: application has grabbed the mouse

select_by_word_characters :@-./_~?&=%+#

#: Characters considered part of a word when double clicking. In
#: addition to these characters any character that is marked as an
#: alphanumeric character in the unicode database will be matched.

click_interval -1.0

#: The interval between successive clicks to detect double/triple
#: clicks (in seconds). Negative numbers will use the system default
#: instead, if available, or fallback to 0.5.

focus_follows_mouse no

#: Set the active window to the window under the mouse when moving the
#: mouse around

pointer_shape_when_grabbed arrow

#: The shape of the mouse pointer when the program running in the
#: terminal grabs the mouse. Valid values are: arrow, beam and hand

#: }}}

#: Performance tuning {{{

repaint_delay 10

#: Delay (in milliseconds) between screen updates. Decreasing it,
#: increases frames-per-second (FPS) at the cost of more CPU usage.
#: The default value yields ~100 FPS which is more than sufficient for
#: most uses. Note that to actually achieve 100 FPS you have to either
#: set sync_to_monitor to no or use a monitor with a high refresh
#: rate. Also, to minimize latency when there is pending input to be
#: processed, repaint_delay is ignored.

input_delay 3

#: Delay (in milliseconds) before input from the program running in
#: the terminal is processed. Note that decreasing it will increase
#: responsiveness, but also increase CPU usage and might cause flicker
#: in full screen programs that redraw the entire screen on each loop,
#: because kitty is so fast that partial screen updates will be drawn.

sync_to_monitor yes

#: Sync screen updates to the refresh rate of the monitor. This
#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
#: when scrolling. However, it limits the rendering speed to the
#: refresh rate of your monitor. With a very high speed mouse/high
#: keyboard repeat rate, you may notice some slight input latency. If
#: so, set this to no.

#: }}}

#: Terminal bell {{{

enable_audio_bell yes

#: }}}

#: Window layout {{{

active_border_color #00ff00
inactive_border_color #cccccc
bell_border_color #ff5a00

#: }}}

#: Tab bar {{{

tab_bar_edge bottom

#: Which edge to show the tab bar on, top or bottom

tab_bar_margin_width 0.0

#: The margin to the left and right of the tab bar (in pts)

#tab_bar_style separator
tab_bar_style fade

#: The tab bar style, can be one of: fade, separator, powerline, or
#: hidden. In the fade style, each tab's edges fade into the
#: background color, in the separator style, tabs are separated by a
#: configurable separator, and the powerline shows the tabs as a
#: continuous line.

tab_bar_min_tabs 2

#: The minimum number of tabs that must exist before the tab bar is
#: shown

tab_switch_strategy previous

#: The algorithm to use when switching to a tab when the current tab
#: is closed. The default of previous will switch to the last used
#: tab. A value of left will switch to the tab to the left of the
#: closed tab. A value of last will switch to the right-most tab.

#tab_fade 0.25 0.5 0.75 1

tab_fade 0.25 1

#: Control how each tab fades into the background when using fade for
#: the tab_bar_style. Each number is an alpha (between zero and one)
#: that controls how much the corresponding cell fades into the
#: background, with zero being no fade and one being full fade. You
#: can change the number of cells used by adding/removing entries to
#: this list.

# tab_separator " ┇"
tab_separator " "

#: The separator between tabs in the tab bar when using separator as
#: the tab_bar_style.

tab_title_template {title}

#: A template to render the tab title. The default just renders the
#: title. If you wish to include the tab-index as well, use something
#: like: {index}: {title}. Useful if you have shortcuts mapped for
#: goto_tab N.

active_tab_title_template none

#: Template to use for active tabs, if not specified falls back to
#: tab_title_template.

#active_tab_foreground   #000
#active_tab_background   #eee
active_tab_foreground   #2E3440
active_tab_background   #8FBCBB
active_tab_font_style   bold-italic
# inactive_tab_foreground #444
# inactive_tab_background #999
inactive_tab_foreground #D8DEE9
inactive_tab_background #2E3440
inactive_tab_font_style normal

#: Tab bar colors and styles

tab_bar_background none

#: Background color for the tab bar. Defaults to using the terminal
#: background color.

#: }}}

#: Color scheme {{{

foreground #dddddd
background #000000

# Nord theme - ported from https://github.com/arcticicestudio/nord-hyper
foreground            #D8DEE9
background            #2E3440
selection_foreground  #000000
selection_background  #FFFACD
url_color             #0087BD
cursor                #81A1C1

# black
color0   #3B4252
color8   #4C566A

# red
color1   #BF616A
color9   #BF616A

# green
color2   #A3BE8C
color10  #A3BE8C

# yellow
color3   #EBCB8B
color11  #EBCB8B

# blue
color4  #81A1C1
color12 #81A1C1

# magenta
color5   #B48EAD
color13  #B48EAD

# cyan
color6   #88C0D0
color14  #8FBCBB

# white
color7   #E5E9F0
color15  #B48EAD

#: }}}

#: Advanced {{{

shell .

#: The shell program to execute. The default value of . means to use
#: whatever shell is set as the default shell for the current user.
#: Note that on macOS if you change this, you might need to add
#: --login to ensure that the shell starts in interactive mode and
#: reads its startup rc files.

editor .

#: The console editor to use when editing the kitty config file or
#: similar tasks. A value of . means to use the environment variables
#: VISUAL and EDITOR in that order. Note that this environment
#: variable has to be set not just in your shell startup scripts but
#: system-wide, otherwise kitty will not see it.

close_on_child_death no

#: Close the window when the child process (shell) exits. If no (the
#: default), the terminal will remain open when the child exits as
#: long as there are still processes outputting to the terminal (for
#: example disowned or backgrounded processes). If yes, the window
#: will close as soon as the child process exits. Note that setting it
#: to yes means that any background processes still using the terminal
#: can fail silently because their stdout/stderr/stdin no longer work.

allow_remote_control no

#: Allow other programs to control kitty. If you turn this on other
#: programs can control all aspects of kitty, including sending text
#: to kitty windows, opening new windows, closing windows, reading the
#: content of windows, etc.  Note that this even works over ssh
#: connections. You can chose to either allow any program running
#: within kitty to control it, with yes or only programs that connect
#: to the socket specified with the kitty --listen-on command line
#: option, if you use the value socket-only. The latter is useful if
#: you want to prevent programs running on a remote computer over ssh
#: from controlling kitty.

# env 

#: Specify environment variables to set in all child processes. Note
#: that environment variables are expanded recursively, so if you
#: use::

#:     env MYVAR1=a
#:     env MYVAR2=${MYVAR1}/${HOME}/b

#: The value of MYVAR2 will be a/<path to home directory>/b.

update_check_interval 24

#: Periodically check if an update to kitty is available. If an update
#: is found a system notification is displayed informing you of the
#: available update. The default is to check every 24 hrs, set to zero
#: to disable.

startup_session none

#: Path to a session file to use for all kitty instances. Can be
#: overridden by using the kitty --session command line option for
#: individual instances. See
#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty
#: documentation for details. Note that relative paths are interpreted
#: with respect to the kitty config directory. Environment variables
#: in the path are expanded.

clipboard_control write-clipboard write-primary

#: Allow programs running in kitty to read and write from the
#: clipboard. You can control exactly which actions are allowed. The
#: set of possible actions is: write-clipboard read-clipboard write-
#: primary read-primary. You can additionally specify no-append to
#: disable kitty's protocol extension for clipboard concatenation. The
#: default is to allow writing to the clipboard and primary selection
#: with concatenation enabled. Note that enabling the read
#: functionality is a security risk as it means that any program, even
#: one running on a remote server via SSH can read your clipboard.

term xterm-kitty

#: The value of the TERM environment variable to set. Changing this
#: can break many terminal programs, only change it if you know what
#: you are doing, not because you read some advice on Stack Overflow
#: to change it. The TERM variable is used by various programs to get
#: information about the capabilities and behavior of the terminal. If
#: you change it, depending on what programs you run, and how
#: different the terminal you are changing it to is, various things
#: from key-presses, to colors, to various advanced features may not
#: work.

#: }}}

#: OS specific tweaks {{{

macos_titlebar_color system

#: Change the color of the kitty window's titlebar on macOS. A value
#: of system means to use the default system color, a value of
#: background means to use the background color of the currently
#: active window and finally you can use an arbitrary color, such as
#: #12af59 or red. WARNING: This option works by using a hack, as
#: there is no proper Cocoa API for it. It sets the background color
#: of the entire window and makes the titlebar transparent. As such it
#: is incompatible with background_opacity. If you want to use both,
#: you are probably better off just hiding the titlebar with
#: hide_window_decorations.

macos_option_as_alt no

#: Use the option key as an alt key. With this set to no, kitty will
#: use the macOS native Option+Key = unicode character behavior. This
#: will break any Alt+key keyboard shortcuts in your terminal
#: programs, but you can use the macOS unicode input technique. You
#: can use the values: left, right, or both to use only the left,
#: right or both Option keys as Alt, instead.

macos_hide_from_tasks no

#: Hide the kitty window from running tasks (Option+Tab) on macOS.

macos_quit_when_last_window_closed no

#: Have kitty quit when all the top-level windows are closed. By
#: default, kitty will stay running, even with no open windows, as is
#: the expected behavior on macOS.

macos_window_resizable yes

#: Disable this if you want kitty top-level (OS) windows to not be
#: resizable on macOS.

macos_thicken_font 0

#: Draw an extra border around the font with the given width, to
#: increase legibility at small font sizes. For example, a value of
#: 0.75 will result in rendering that looks similar to sub-pixel
#: antialiasing at common font sizes.

macos_traditional_fullscreen no

#: Use the traditional full-screen transition, that is faster, but
#: less pretty.

macos_show_window_title_in all

#: Show or hide the window title in the macOS window or menu-bar. A
#: value of window will show the title of the currently active window
#: at the top of the macOS window. A value of menubar will show the
#: title of the currently active window in the macOS menu-bar, making
#: use of otherwise wasted space. all will show the title everywhere
#: and none hides the title in the window and the menu-bar.

macos_custom_beam_cursor no

#: Enable/disable custom mouse cursor for macOS that is easier to see
#: on both light and dark backgrounds. WARNING: this might make your
#: mouse cursor invisible on dual GPU machines.

linux_display_server auto

#: Choose between Wayland and X11 backends. By default, an appropriate
#: backend based on the system state is chosen automatically. Set it
#: to x11 or wayland to force the choice.

#: }}}

#: Keyboard shortcuts {{{

kitty_mod ctrl+shift

#: The value of kitty_mod is used as the modifier for all default
#: shortcuts, you can change it in your kitty.conf to change the
#: modifiers for all the default shortcuts.

clear_all_shortcuts no

#: You can have kitty remove all shortcut definition seen up to this
#: point. Useful, for instance, to remove the default shortcuts.

# kitten_alias hints hints --hints-offset=0

#: You can create aliases for kitten names, this allows overriding the
#: defaults for kitten options and can also be used to shorten
#: repeated mappings of the same kitten with a specific group of
#: options. For example, the above alias changes the default value of
#: kitty +kitten hints --hints-offset to zero for all mappings,
#: including the builtin ones.

#: Clipboard {{{

map kitty_mod+c copy_to_clipboard

#: There is also a copy_or_interrupt action that can be optionally
#: mapped to Ctrl+c. It will copy only if there is a selection and
#: send an interrupt otherwise.

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

#: You can also pass the contents of the current selection to any
#: program using pass_selection_to_program. By default, the system's
#: open program is used, but you can specify your own, the selection
#: will be passed as a command line argument to the program, for
#: example::

#:     map kitty_mod+o pass_selection_to_program firefox

#: You can pass the current selection to a terminal program running in
#: a new kitty window, by using the @selection placeholder::

#:     map kitty_mod+y new_window less @selection

#: }}}

#: Scrolling {{{

map kitty_mod+up        scroll_line_up
map kitty_mod+k         scroll_line_up
map kitty_mod+down      scroll_line_down
map kitty_mod+j         scroll_line_down
map kitty_mod+page_up   scroll_page_up
map kitty_mod+page_down scroll_page_down
map kitty_mod+home      scroll_home
map kitty_mod+end       scroll_end
map kitty_mod+h         show_scrollback

#: You can pipe the contents of the current screen + history buffer as
#: STDIN to an arbitrary program using the ``launch`` function. For
#: example, the following opens the scrollback buffer in less in an
#: overlay window::

#:     map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R

#: For more details on piping screen and buffer contents to external
#: programs, see launch.

#: }}}

#: Window management {{{

map kitty_mod+enter new_window

#: You can open a new window running an arbitrary program, for
#: example::

#:     map kitty_mod+y      launch mutt

#: You can open a new window with the current working directory set to
#: the working directory of the current window using::

#:     map ctrl+alt+enter    launch --cwd=current

#: You can open a new window that is allowed to control kitty via the
#: kitty remote control facility by prefixing the command line with @.
#: Any programs running in that window will be allowed to control
#: kitty. For example::

#:     map ctrl+enter launch --allow-remote-control some_program

#: You can open a new window next to the currently active window or as
#: the first window, with::

#:     map ctrl+n launch --location=neighbor some_program
#:     map ctrl+f launch --location=first some_program

#: For more details, see launch.

map kitty_mod+n new_os_window

#: Works like new_window above, except that it opens a top level OS
#: kitty window. In particular you can use new_os_window_with_cwd to
#: open a window with the current working directory.

map kitty_mod+w close_window
map kitty_mod+] next_window
map kitty_mod+[ previous_window
map kitty_mod+f move_window_forward
map kitty_mod+b move_window_backward
map kitty_mod+` move_window_to_top
map kitty_mod+r start_resizing_window
map kitty_mod+1 first_window
map kitty_mod+2 second_window
map kitty_mod+3 third_window
map kitty_mod+4 fourth_window
map kitty_mod+5 fifth_window
map kitty_mod+6 sixth_window
map kitty_mod+7 seventh_window
map kitty_mod+8 eighth_window
map kitty_mod+9 ninth_window
map kitty_mod+0 tenth_window
#: }}}

#: Tab management {{{

map kitty_mod+right next_tab
map kitty_mod+left  previous_tab
map kitty_mod+t     new_tab
map kitty_mod+q     close_tab
map kitty_mod+.     move_tab_forward
map kitty_mod+,     move_tab_backward
map kitty_mod+alt+t set_tab_title

#: You can also create shortcuts to go to specific tabs, with 1 being
#: the first tab, 2 the second tab and -1 being the previously active
#: tab::

#:     map ctrl+alt+1 goto_tab 1
#:     map ctrl+alt+2 goto_tab 2

#: Just as with new_window above, you can also pass the name of
#: arbitrary commands to run when using new_tab and use
#: new_tab_with_cwd. Finally, if you want the new tab to open next to
#: the current tab rather than at the end of the tabs list, use::

#:     map ctrl+t new_tab !neighbor [optional cmd to run]
#: }}}

#: Layout management {{{

map kitty_mod+l next_layout

#: You can also create shortcuts to switch to specific layouts::

#:     map ctrl+alt+t goto_layout tall
#:     map ctrl+alt+s goto_layout stack

#: Similarly, to switch back to the previous layout::

#:    map ctrl+alt+p last_used_layout
#: }}}

#: Font sizes {{{

#: You can change the font size for all top-level kitty OS windows at
#: a time or only the current one.

map kitty_mod+equal     change_font_size all +2.0
map kitty_mod+minus     change_font_size all -2.0
map kitty_mod+backspace change_font_size all 0

#: To setup shortcuts for specific font sizes::

#:     map kitty_mod+f6 change_font_size all 10.0

#: To setup shortcuts to change only the current OS window's font
#: size::

#:     map kitty_mod+f6 change_font_size current 10.0
#: }}}

#: Select and act on visible text {{{

#: Use the hints kitten to select text and either pass it to an
#: external program or insert it into the terminal or copy it to the
#: clipboard.

map kitty_mod+e kitten hints

#: Open a currently visible URL using the keyboard. The program used
#: to open the URL is specified in open_url_with.

map kitty_mod+p>f kitten hints --type path --program -

#: Select a path/filename and insert it into the terminal. Useful, for
#: instance to run git commands on a filename output from a previous
#: git command.

map kitty_mod+p>shift+f kitten hints --type path

#: Select a path/filename and open it with the default open program.

map kitty_mod+p>l kitten hints --type line --program -

#: Select a line of text and insert it into the terminal. Use for the
#: output of things like: ls -1

map kitty_mod+p>w kitten hints --type word --program -

#: Select words and insert into terminal.

map kitty_mod+p>h kitten hints --type hash --program -

#: Select something that looks like a hash and insert it into the
#: terminal. Useful with git, which uses sha1 hashes to identify
#: commits


#: The hints kitten has many more modes of operation that you can map
#: to different shortcuts. For a full description see kittens/hints.
#: }}}

#: Miscellaneous {{{

map kitty_mod+f11    toggle_fullscreen
map kitty_mod+f10    toggle_maximized
map kitty_mod+u      kitten unicode_input
map kitty_mod+f2     edit_config_file
map kitty_mod+escape kitty_shell window

#: Open the kitty shell in a new window/tab/overlay/os_window to
#: control kitty using commands.

map kitty_mod+a>m    set_background_opacity +0.1
map kitty_mod+a>l    set_background_opacity -0.1
map kitty_mod+a>1    set_background_opacity 1
map kitty_mod+a>d    set_background_opacity default
map kitty_mod+delete clear_terminal reset active

#: You can create shortcuts to clear/reset the terminal. For example::

#:     # Reset the terminal
#:     map kitty_mod+f9 clear_terminal reset active
#:     # Clear the terminal screen by erasing all contents
#:     map kitty_mod+f10 clear_terminal clear active
#:     # Clear the terminal scrollback by erasing it
#:     map kitty_mod+f11 clear_terminal scrollback active
#:     # Scroll the contents of the screen into the scrollback
#:     map kitty_mod+f12 clear_terminal scroll active

#: If you want to operate on all windows instead of just the current
#: one, use all instead of active.

#: It is also possible to remap Ctrl+L to both scroll the current
#: screen contents into the scrollback buffer and clear the screen,
#: instead of just clearing the screen::

#:     map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c


#: You can tell kitty to send arbitrary (UTF-8) encoded text to the
#: client program when pressing specified shortcut keys. For example::

#:     map ctrl+alt+a send_text all Special text

#: This will send "Special text" when you press the ctrl+alt+a key
#: combination.  The text to be sent is a python string literal so you
#: can use escapes like \x1b to send control codes or \u21fb to send
#: unicode characters (or you can just input the unicode characters
#: directly as UTF-8 text). The first argument to send_text is the
#: keyboard modes in which to activate the shortcut. The possible
#: values are normal or application or kitty or a comma separated
#: combination of them.  The special keyword all means all modes. The
#: modes normal and application refer to the DECCKM cursor key mode
#: for terminals, and kitty refers to the special kitty extended
#: keyboard protocol.

#: Another example, that outputs a word and then moves the cursor to
#: the start of the line (same as pressing the Home key)::

#:     map ctrl+alt+a send_text normal Word\x1b[H
#:     map ctrl+alt+a send_text application Word\x1bOH

#: }}}

# }}}