Skip to content

Instantly share code, notes, and snippets.

@afkcodes
Forked from nicbet/kitty.conf
Created July 12, 2021 03:56
Show Gist options
  • Select an option

  • Save afkcodes/2c63ac125dba3178a03694f6d34dba86 to your computer and use it in GitHub Desktop.

Select an option

Save afkcodes/2c63ac125dba3178a03694f6d34dba86 to your computer and use it in GitHub Desktop.

Revisions

  1. @nicbet nicbet created this gist Mar 6, 2019.
    944 changes: 944 additions & 0 deletions kitty.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,944 @@
    # /.config/kitty/kitty.conf

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

    #: Fonts {{{

    #: kitty has very powerful font management. You can configure
    #: individual font faces and even specify special fonts for particular
    #: characters.

    # font_family monospace
    # bold_font auto
    # italic_font auto
    # bold_italic_font auto

    #: You can specify different fonts for the bold/italic/bold-italic
    #: variants. By default they are derived automatically, by the OSes
    #: font system. Setting them manually is useful for font families that
    #: have many weight variants like Book, Medium, Thick, etc. For
    #: example::

    #: font_family Operator Mono Book
    #: bold_font Operator Mono Medium
    #: italic_font Operator Mono Book Italic
    #: bold_italic_font Operator Mono Medium Italic

    font_family FuraCode Nerdfont Mono
    font_size 12.0

    # font_size 11.0

    #: Font size (in pts)

    # adjust_line_height 0
    # adjust_column_width 0

    #: Change the size of each character cell kitty renders. You can use
    #: either numbers, which are interpreted as pixels or percentages
    #: (number followed by %), which are interpreted as percentages of the
    #: unmodified values. You can use negative pixels or percentages less
    #: than 100% to reduce sizes (but this might cause rendering
    #: artifacts).

    # symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols

    #: Map the specified unicode codepoints to a particular font. Useful
    #: if you need special rendering for some symbols, such as for
    #: Powerline. Avoids the need for patched fonts. Each unicode code
    #: point is specified in the form U+<code point in hexadecimal>. You
    #: can specify multiple code points, separated by commas and ranges
    #: separated by hyphens. symbol_map itself can be specified multiple
    #: times. Syntax is::

    #: symbol_map codepoints Font Family Name

    # box_drawing_scale 0.001, 1, 1.5, 2

    #: Change the sizes of the lines used for the box drawing unicode
    #: characters These values are in pts. They will be scaled by the
    #: monitor DPI to arrive at a pixel value. There must be four values
    #: corresponding to thin, normal, thick, and very thick lines.

    #: }}}

    #: Cursor customization {{{

    # cursor #cccccc

    #: Default cursor color

    # cursor_text_color #111111

    #: Choose the color of text under the cursor. If you want it rendered
    #: with the background color of the cell underneath instead, use the
    #: special keyword: background

    # cursor_shape block

    #: The cursor shape can be one of (block, beam, underline)

    # cursor_blink_interval 0.5
    # cursor_stop_blinking_after 15.0

    #: The interval (in seconds) at which to blink the cursor. Set to zero
    #: to disable blinking. Note that numbers smaller than repaint_delay
    #: will be limited to repaint_delay. Stop blinking cursor after the
    #: specified number of seconds of keyboard inactivity. Set to zero to
    #: never stop blinking.

    #: }}}

    #: 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 {{{

    # 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 on select. With this enabled, 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. Note that this is a security risk, as all
    #: programs, including websites open in your browser can read the
    #: contents of the clipboard.

    # rectangle_select_modifiers ctrl+alt

    #: The modifiers to use rectangular selection (i.e. to select text in
    #: a rectangular block with 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
    #: alpha-numeric 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.

    # 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.

    # focus_follows_mouse no

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

    #: }}}

    #: 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.

    # 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

    #: Enable/disable the audio bell. Useful in environments that require
    #: silence.

    # visual_bell_duration 0.0

    #: Visual bell duration. Flash the screen when a bell occurs for the
    #: specified number of seconds. Set to zero to disable.

    # window_alert_on_bell yes

    #: Request window attention on bell. Makes the dock icon bounce on
    #: macOS or the taskbar flash on linux.

    # bell_on_tab yes

    #: Show a bell symbol on the tab if a bell occurs in one of the
    #: windows in the tab and the window is not the currently focused
    #: window

    #: }}}

    #: Window layout {{{

    # remember_window_size yes
    # initial_window_width 640
    # initial_window_height 400

    #: If enabled, the window size will be remembered so that new
    #: instances of kitty will have the same size as the previous
    #: instance. If disabled, the window will initially have size
    #: configured by initial_window_width/height, in pixels. You can use a
    #: suffix of "c" on the width/height values to have them interpreted
    #: as number of cells instead of pixels.

    # enabled_layouts *

    #: The enabled window layouts. A comma separated list of layout names.
    #: The special value all means all layouts. The first listed layout
    #: will be used as the startup layout. For a list of available
    #: layouts, see the
    #: https://sw.kovidgoyal.net/kitty/index.html#layouts.

    # window_resize_step_cells 2
    # window_resize_step_lines 2

    #: The step size (in units of cell width/cell height) to use when
    #: resizing windows. The cells value is used for horizontal resizing
    #: and the lines value for vertical resizing.

    # window_border_width 1.0

    #: The width (in pts) of window borders. Will be rounded to the
    #: nearest number of pixels based on screen resolution. Note that
    #: borders are displayed only when more than one window is visible.
    #: They are meant to separate multiple windows.

    # draw_minimal_borders yes

    #: Draw only the minimum borders needed. This means that only the
    #: minimum needed borders for inactive windows are drawn. That is only
    #: the borders that separate the inactive window from a neighbor. Note
    #: that setting a non-zero window margin overrides this and causes all
    #: borders to be drawn.

    # window_margin_width 0.0

    #: The window margin (in pts) (blank area outside the border)

    # single_window_margin_width -1000.0

    #: The window margin (in pts) to use when only a single window is
    #: visible. Negative values will cause the value of
    #: window_margin_width to be used instead.

    # window_padding_width 0.0

    #: The window padding (in pts) (blank area between the text and the
    #: window border)

    # active_border_color #00ff00

    #: The color for the border of the active window

    # inactive_border_color #cccccc

    #: The color for the border of inactive windows

    # bell_border_color #ff5a00

    #: The color for the border of inactive windows in which a bell has
    #: occurred

    # inactive_text_alpha 1.0

    #: Fade the text in inactive windows by the specified amount (a number
    #: between zero and one, with zero being fully faded).

    # hide_window_decorations no

    #: Hide the window decorations (title-bar and window borders). Whether
    #: this works and exactly what effect it has depends on the window
    #: manager/operating system.

    #: }}}

    #: 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 fade

    #: The tab bar style, can be one of: fade, separator 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.

    # tab_fade 0.25 0.5 0.75 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 " ┇"

    #: 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_foreground #000
    # active_tab_background #eee
    # active_tab_font_style bold-italic
    # inactive_tab_foreground #444
    # inactive_tab_background #999
    # inactive_tab_font_style normal

    #: Tab bar colors and styles

    #: }}}

    #: Color scheme {{{

    # foreground #dddddd
    # background #000000

    #: The foreground and background colors

    # background_opacity 1.0
    # dynamic_background_opacity no

    #: The opacity of the background. A number between 0 and 1, where 1 is
    #: opaque and 0 is fully transparent. This will only work if
    #: supported by the OS (for instance, when using a compositor under
    #: X11). Note that it only sets the default background color's
    #: opacity. This is so that things like the status bar in vim,
    #: powerline prompts, etc. still look good. But it means that if you
    #: use a color theme with a background color in your editor, it will
    #: not be rendered as transparent. Instead you should change the
    #: default background color in your kitty config and not use a
    #: background color in the editor color scheme. Or use the escape
    #: codes to set the terminals default colors in a shell script to
    #: launch your editor. Be aware that using a value less than 1.0 is a
    #: (possibly significant) performance hit. If you want to dynamically
    #: change transparency of windows set dynamic_background_opacity to
    #: yes (this is off by default as it has a performance cost)

    # dim_opacity 0.75

    #: How much to dim text that has the DIM/FAINT attribute set. One
    #: means no dimming and zero means fully dimmed (i.e. invisible).

    # selection_foreground #000000
    # selection_background #FFFACD

    #: The foreground and background for text selected with the mouse


    #: The 16 terminal colors. There are 8 basic colors, each color has a
    #: dull and bright version. You can also set the remaining colors from
    #: the 256 color table as color16 to color255.

    # Nic's Theme
    color0 #FFFFFF
    color1 #DC4968
    color2 #8BE335
    color3 #E0DD5F
    color4 #5787FD
    color5 #DB4A79
    color6 #84D7EC
    color7 #DFDFDF

    color8 #A6A6A6
    color9 #F0C7BE
    color10 #E3FABB
    color11 #FEFDD6
    color12 #D6E8FE
    color13 #EDB8FD
    color14 #84D7EC
    color15 #FFFFFF

    # color0 #000000
    # color8 #767676

    #: black

    # color1 #cc0403
    # color9 #f2201f

    #: red

    # color2 #19cb00
    # color10 #23fd00

    #: green

    # color3 #cecb00
    # color11 #fffd00

    #: yellow

    # color4 #0d73cc
    # color12 #1a8fff

    #: blue

    # color5 #cb1ed1
    # color13 #fd28ff

    #: magenta

    # color6 #0dcdcd
    # color14 #14ffff

    #: cyan

    # color7 #dddddd
    # color15 #ffffff

    #: white

    #: }}}

    #: 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 variable
    #: EDITOR. 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.

    # 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.

    # 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 The default is to allow writing to the
    #: clipboard and primary selection. 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 if 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 yes

    #: 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.

    # 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_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.

    #: }}}

    #: Keyboard shortcuts {{{

    #: For a list of key names, see: GLFW keys
    #: <http://www.glfw.org/docs/latest/group__keys.html>. The name to use
    #: is the part after the GLFW_KEY_ prefix. For a list of modifier
    #: names, see: GLFW mods
    #: <http://www.glfw.org/docs/latest/group__mods.html>

    #: On Linux you can also use XKB key names to bind keys that are not
    #: supported by GLFW. See XKB keys
    #: <https://github.com/xkbcommon/libxkbcommon/blob/master/xkbcommon/xkbcommon-
    #: keysyms.h> for a list of key names. The name to use is the part
    #: after the XKB_KEY_ prefix. Note that you should only use an XKB key
    #: name for keys that are not present in the list of GLFW keys.

    #: Finally, you can use raw system key codes to map keys. To see the
    #: system key code for a key, start kitty with the kitty --debug-
    #: keyboard option. Then kitty will output some debug text for every
    #: key event. In that text look for ``native_code`` the value of that
    #: becomes the key name in the shortcut. For example:

    #: .. code-block:: none

    #: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a'

    #: Here, the key name for the A key is 0x61 and you can use it with::

    #: map ctrl+0x61 something

    #: to map ctrl+a to something.

    #: You can use the special action no_op to unmap a keyboard shortcut
    #: that is assigned in the default configuration.

    #: You can combine multiple actions to be triggered by a single
    #: shortcut, using the syntax below::

    #: map key combine <separator> action1 <separator> action2 <separator> action3 ...

    #: For example::

    #: map kitty_mod+e combine : new_window : next_layout

    #: this will create a new window and switch to the next available
    #: layout

    #: You can use multi-key shortcuts using the syntax shown below::

    #: map key1>key2>key3 action

    #: For example::

    #: map ctrl+f>2 set_font_size 20

    # 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.

    #: Clipboard {{{

    # map cmd+c copy_to_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 cmd+v paste_from_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

    #: 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, 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 ``pipe`` function. For
    #: example, the following opens the scrollback buffer in less in an
    #: overlay window::

    #: map f1 pipe @ansi overlay less +G -R

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

    #: }}}

    #: Window management {{{

    # map kitty_mod+enter new_window

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

    #: map kitty_mod+y new_window 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 new_window_with_cwd

    #: 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 new_window @ some_program

    # map cmd+n new_os_window
    # map kitty_mod+n new_os_window
    # map kitty_mod+w close_window
    # map cmd+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 ctrl+tab next_tab
    # map kitty_mod+right next_tab
    # map ctrl+shift+tab previous_tab
    # map kitty_mod+left previous_tab
    # map kitty_mod+t new_tab
    # map cmd+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+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 :italic`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


    #: 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

    #: }}}

    # }}}