···11+# kitty terminal config
22+33+App icon is from [kitty-icon](https://github.com/DinkDonk/kitty-icon)
kitty/kitty-dark.icns
This is a binary file and will not be displayed.
kitty/kitty-light.icns
This is a binary file and will not be displayed.
kitty/kitty.app.icns
This is a binary file and will not be displayed.
+2266
kitty/kitty.conf
···11+# vim:fileencoding=utf-8:foldmethod=marker
22+33+#: Fonts {{{
44+55+#: kitty has very powerful font management. You can configure
66+#: individual font faces and even specify special fonts for particular
77+#: characters.
88+99+font_family Fira Code
1010+bold_font Fira Code Bold
1111+italic_font auto
1212+bold_italic_font auto
1313+1414+#: You can specify different fonts for the bold/italic/bold-italic
1515+#: variants. To get a full list of supported fonts use the `kitty
1616+#: +list-fonts` command. By default they are derived automatically, by
1717+#: the OSes font system. When bold_font or bold_italic_font is set to
1818+#: auto on macOS, the priority of bold fonts is semi-bold, bold,
1919+#: heavy. Setting them manually is useful for font families that have
2020+#: many weight variants like Book, Medium, Thick, etc. For example::
2121+2222+#: font_family Operator Mono Book
2323+#: bold_font Operator Mono Medium
2424+#: italic_font Operator Mono Book Italic
2525+#: bold_italic_font Operator Mono Medium Italic
2626+2727+font_size 16.0
2828+2929+#: Font size (in pts)
3030+3131+# force_ltr no
3232+3333+#: kitty does not support BIDI (bidirectional text), however, for RTL
3434+#: scripts, words are automatically displayed in RTL. That is to say,
3535+#: in an RTL script, the words "HELLO WORLD" display in kitty as
3636+#: "WORLD HELLO", and if you try to select a substring of an RTL-
3737+#: shaped string, you will get the character that would be there had
3838+#: the the string been LTR. For example, assuming the Hebrew word
3939+#: ירושלים, selecting the character that on the screen appears to be ם
4040+#: actually writes into the selection buffer the character י. kitty's
4141+#: default behavior is useful in conjunction with a filter to reverse
4242+#: the word order, however, if you wish to manipulate RTL glyphs, it
4343+#: can be very challenging to work with, so this option is provided to
4444+#: turn it off. Furthermore, this option can be used with the command
4545+#: line program GNU FriBidi
4646+#: <https://github.com/fribidi/fribidi#executable> to get BIDI
4747+#: support, because it will force kitty to always treat the text as
4848+#: LTR, which FriBidi expects for terminals.
4949+5050+# - Use additional nerd symbols
5151+# See https://github.com/be5invis/Iosevka/issues/248
5252+# See https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points
5353+# Seti-UI + Custom
5454+symbol_map U+E5FA-U+E62B Symbols Nerd Font
5555+# Devicons
5656+symbol_map U+E700-U+E7C5 Symbols Nerd Font
5757+# Font Awesome
5858+symbol_map U+F000-U+F2E0 Symbols Nerd Font
5959+# Font Awesome Extension
6060+symbol_map U+E200-U+E2A9 Symbols Nerd Font
6161+# Material Design Icons
6262+symbol_map U+F500-U+FD46 Symbols Nerd Font
6363+# Weather
6464+symbol_map U+E300-U+E3EB Symbols Nerd Font
6565+# Octicons
6666+symbol_map U+F400-U+F4A8,U+2665,U+26A1,U+F27C Symbols Nerd Font
6767+# Powerline Extra Symbols
6868+symbol_map U+E0A3,U+E0B4-U+E0C8,U+E0CC-U+E0D2,U+E0D4 Symbols Nerd Font
6969+# IEC Power Symbols
7070+symbol_map U+23FB-U+23FE,U+2b58 Symbols Nerd Font
7171+# Font Logos
7272+symbol_map U+F300-U+F313 Symbols Nerd Font
7373+# Pomicons
7474+symbol_map U+E000-U+E00D Symbols Nerd Font
7575+7676+#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
7777+7878+#: Map the specified Unicode codepoints to a particular font. Useful
7979+#: if you need special rendering for some symbols, such as for
8080+#: Powerline. Avoids the need for patched fonts. Each Unicode code
8181+#: point is specified in the form `U+<code point in hexadecimal>`. You
8282+#: can specify multiple code points, separated by commas and ranges
8383+#: separated by hyphens. This option can be specified multiple times.
8484+#: The syntax is::
8585+8686+#: symbol_map codepoints Font Family Name
8787+8888+# narrow_symbols
8989+9090+#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1
9191+9292+#: Usually, for Private Use Unicode characters and some symbol/dingbat
9393+#: characters, if the character is followed by one or more spaces,
9494+#: kitty will use those extra cells to render the character larger, if
9595+#: the character in the font has a wide aspect ratio. Using this
9696+#: option you can force kitty to restrict the specified code points to
9797+#: render in the specified number of cells (defaulting to one cell).
9898+#: This option can be specified multiple times. The syntax is::
9999+100100+#: narrow_symbols codepoints [optionally the number of cells]
101101+102102+# disable_ligatures never
103103+104104+#: Choose how you want to handle multi-character ligatures. The
105105+#: default is to always render them. You can tell kitty to not render
106106+#: them when the cursor is over them by using cursor to make editing
107107+#: easier, or have kitty never render them at all by using always, if
108108+#: you don't like them. The ligature strategy can be set per-window
109109+#: either using the kitty remote control facility or by defining
110110+#: shortcuts for it in kitty.conf, for example::
111111+112112+#: map alt+1 disable_ligatures_in active always
113113+#: map alt+2 disable_ligatures_in all never
114114+#: map alt+3 disable_ligatures_in tab cursor
115115+116116+#: Note that this refers to programming ligatures, typically
117117+#: implemented using the calt OpenType feature. For disabling general
118118+#: ligatures, use the font_features option.
119119+120120+font_features FiraCode-Retina +zero +ss06
121121+122122+#: E.g. font_features none
123123+124124+#: Choose exactly which OpenType features to enable or disable. This
125125+#: is useful as some fonts might have features worthwhile in a
126126+#: terminal. For example, Fira Code includes a discretionary feature,
127127+#: zero, which in that font changes the appearance of the zero (0), to
128128+#: make it more easily distinguishable from Ø. Fira Code also includes
129129+#: other discretionary features known as Stylistic Sets which have the
130130+#: tags ss01 through ss20.
131131+132132+#: For the exact syntax to use for individual features, see the
133133+#: HarfBuzz documentation <https://harfbuzz.github.io/harfbuzz-hb-
134134+#: common.html#hb-feature-from-string>.
135135+136136+#: Note that this code is indexed by PostScript name, and not the font
137137+#: family. This allows you to define very precise feature settings;
138138+#: e.g. you can disable a feature in the italic font but not in the
139139+#: regular font.
140140+141141+#: On Linux, font features are first read from the FontConfig database
142142+#: and then this option is applied, so they can be configured in a
143143+#: single, central place.
144144+145145+#: To get the PostScript name for a font, use `kitty +list-fonts
146146+#: --psnames`:
147147+148148+#: .. code-block:: sh
149149+150150+#: $ kitty +list-fonts --psnames | grep Fira
151151+#: Fira Code
152152+#: Fira Code Bold (FiraCode-Bold)
153153+#: Fira Code Light (FiraCode-Light)
154154+#: Fira Code Medium (FiraCode-Medium)
155155+#: Fira Code Regular (FiraCode-Regular)
156156+#: Fira Code Retina (FiraCode-Retina)
157157+158158+#: The part in brackets is the PostScript name.
159159+160160+#: Enable alternate zero and oldstyle numerals::
161161+162162+#: font_features FiraCode-Retina +zero +onum
163163+164164+#: Enable only alternate zero in the bold font::
165165+166166+#: font_features FiraCode-Bold +zero
167167+168168+#: Disable the normal ligatures, but keep the calt feature which (in
169169+#: this font) breaks up monotony::
170170+171171+#: font_features TT2020StyleB-Regular -liga +calt
172172+173173+#: In conjunction with force_ltr, you may want to disable Arabic
174174+#: shaping entirely, and only look at their isolated forms if they
175175+#: show up in a document. You can do this with e.g.::
176176+177177+#: font_features UnifontMedium +isol -medi -fina -init
178178+179179+modify_font cell_height 100%
180180+# modify_font baseline 3.5
181181+182182+#: Modify font characteristics such as the position or thickness of
183183+#: the underline and strikethrough. The modifications can have the
184184+#: suffix px for pixels or % for percentage of original value. No
185185+#: suffix means use pts. For example::
186186+187187+#: modify_font underline_position -2
188188+#: modify_font underline_thickness 150%
189189+#: modify_font strikethrough_position 2px
190190+191191+#: Additionally, you can modify the size of the cell in which each
192192+#: font glyph is rendered and the baseline at which the glyph is
193193+#: placed in the cell. For example::
194194+195195+#: modify_font cell_width 80%
196196+#: modify_font cell_height -2px
197197+#: modify_font baseline 3
198198+199199+#: Note that modifying the baseline will automatically adjust the
200200+#: underline and strikethrough positions by the same amount.
201201+#: Increasing the baseline raises glyphs inside the cell and
202202+#: decreasing it lowers them. Decreasing the cell size might cause
203203+#: rendering artifacts, so use with care.
204204+205205+# box_drawing_scale 0.001, 1, 1.5, 2
206206+207207+#: The sizes of the lines used for the box drawing Unicode characters.
208208+#: These values are in pts. They will be scaled by the monitor DPI to
209209+#: arrive at a pixel value. There must be four values corresponding to
210210+#: thin, normal, thick, and very thick lines.
211211+212212+#: }}}
213213+214214+#: Cursor customization {{{
215215+216216+# cursor #cccccc
217217+218218+#: Default cursor color. If set to the special value none the cursor
219219+#: will be rendered with a "reverse video" effect. It's color will be
220220+#: the color of the text in the cell it is over and the text will be
221221+#: rendered with the background color of the cell. Note that if the
222222+#: program running in the terminal sets a cursor color, this takes
223223+#: precedence. Also, the cursor colors are modified if the cell
224224+#: background and foreground colors have very low contrast.
225225+226226+# cursor_text_color #111111
227227+228228+#: The color of text under the cursor. If you want it rendered with
229229+#: the background color of the cell underneath instead, use the
230230+#: special keyword: background. Note that if cursor is set to none
231231+#: then this option is ignored.
232232+233233+# cursor_shape block
234234+235235+#: The cursor shape can be one of block, beam, underline. Note that
236236+#: when reloading the config this will be changed only if the cursor
237237+#: shape has not been set by the program running in the terminal. This
238238+#: sets the default cursor shape, applications running in the terminal
239239+#: can override it. In particular, shell integration
240240+#: <https://sw.kovidgoyal.net/kitty/shell-integration/> in kitty sets
241241+#: the cursor shape to beam at shell prompts. You can avoid this by
242242+#: setting shell_integration to no-cursor.
243243+244244+# cursor_beam_thickness 1.5
245245+246246+#: The thickness of the beam cursor (in pts).
247247+248248+# cursor_underline_thickness 2.0
249249+250250+#: The thickness of the underline cursor (in pts).
251251+252252+cursor_blink_interval 0
253253+254254+#: The interval to blink the cursor (in seconds). Set to zero to
255255+#: disable blinking. Negative values mean use system default. Note
256256+#: that the minimum interval will be limited to repaint_delay.
257257+258258+# cursor_stop_blinking_after 15.0
259259+260260+#: Stop blinking cursor after the specified number of seconds of
261261+#: keyboard inactivity. Set to zero to never stop blinking.
262262+263263+#: }}}
264264+265265+#: Scrollback {{{
266266+267267+# scrollback_lines 2000
268268+269269+#: Number of lines of history to keep in memory for scrolling back.
270270+#: Memory is allocated on demand. Negative numbers are (effectively)
271271+#: infinite scrollback. Note that using very large scrollback is not
272272+#: recommended as it can slow down performance of the terminal and
273273+#: also use large amounts of RAM. Instead, consider using
274274+#: scrollback_pager_history_size. Note that on config reload if this
275275+#: is changed it will only affect newly created windows, not existing
276276+#: ones.
277277+278278+# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
279279+280280+#: Program with which to view scrollback in a new window. The
281281+#: scrollback buffer is passed as STDIN to this program. If you change
282282+#: it, make sure the program you use can handle ANSI escape sequences
283283+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
284284+#: line above will be replaced by an integer representing which line
285285+#: should be at the top of the screen. Similarly CURSOR_LINE and
286286+#: CURSOR_COLUMN will be replaced by the current cursor position or
287287+#: set to 0 if there is no cursor, for example, when showing the last
288288+#: command output.
289289+290290+# scrollback_pager_history_size 0
291291+292292+#: Separate scrollback history size (in MB), used only for browsing
293293+#: the scrollback buffer with pager. This separate buffer is not
294294+#: available for interactive scrolling but will be piped to the pager
295295+#: program when viewing scrollback buffer in a separate window. The
296296+#: current implementation stores the data in UTF-8, so approximatively
297297+#: 10000 lines per megabyte at 100 chars per line, for pure ASCII,
298298+#: unformatted text. A value of zero or less disables this feature.
299299+#: The maximum allowed size is 4GB. Note that on config reload if this
300300+#: is changed it will only affect newly created windows, not existing
301301+#: ones.
302302+303303+# scrollback_fill_enlarged_window no
304304+305305+#: Fill new space with lines from the scrollback buffer after
306306+#: enlarging a window.
307307+308308+# wheel_scroll_multiplier 5.0
309309+310310+#: Multiplier for the number of lines scrolled by the mouse wheel.
311311+#: Note that this is only used for low precision scrolling devices,
312312+#: not for high precision scrolling devices on platforms such as macOS
313313+#: and Wayland. Use negative numbers to change scroll direction. See
314314+#: also wheel_scroll_min_lines.
315315+316316+# wheel_scroll_min_lines 1
317317+318318+#: The minimum number of lines scrolled by the mouse wheel. The scroll
319319+#: multiplier wheel_scroll_multiplier only takes effect after it
320320+#: reaches this number. Note that this is only used for low precision
321321+#: scrolling devices like wheel mice that scroll by very small amounts
322322+#: when using the wheel. With a negative number, the minimum number of
323323+#: lines will always be added.
324324+325325+# touch_scroll_multiplier 1.0
326326+327327+#: Multiplier for the number of lines scrolled by a touchpad. Note
328328+#: that this is only used for high precision scrolling devices on
329329+#: platforms such as macOS and Wayland. Use negative numbers to change
330330+#: scroll direction.
331331+332332+#: }}}
333333+334334+#: Mouse {{{
335335+336336+# mouse_hide_wait 3.0
337337+338338+#: Hide mouse cursor after the specified number of seconds of the
339339+#: mouse not being used. Set to zero to disable mouse cursor hiding.
340340+#: Set to a negative value to hide the mouse cursor immediately when
341341+#: typing text. Disabled by default on macOS as getting it to work
342342+#: robustly with the ever-changing sea of bugs that is Cocoa is too
343343+#: much effort.
344344+345345+# url_color #0087bd
346346+# url_style curly
347347+348348+#: The color and style for highlighting URLs on mouse-over. url_style
349349+#: can be one of: none, straight, double, curly, dotted, dashed.
350350+351351+# open_url_with default
352352+353353+#: The program to open clicked URLs. The special value default with
354354+#: first look for any URL handlers defined via the open_actions
355355+#: <https://sw.kovidgoyal.net/kitty/open_actions/> facility and if non
356356+#: are found, it will use the Operating System's default URL handler
357357+#: (open on macOS and xdg-open on Linux).
358358+359359+# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh
360360+361361+#: The set of URL prefixes to look for when detecting a URL under the
362362+#: mouse cursor.
363363+364364+# detect_urls yes
365365+366366+#: Detect URLs under the mouse. Detected URLs are highlighted with an
367367+#: underline and the mouse cursor becomes a hand over them. Even if
368368+#: this option is disabled, URLs are still clickable.
369369+370370+# url_excluded_characters
371371+372372+#: Additional characters to be disallowed from URLs, when detecting
373373+#: URLs under the mouse cursor. By default, all characters that are
374374+#: legal in URLs are allowed.
375375+376376+# copy_on_select no
377377+378378+#: Copy to clipboard or a private buffer on select. With this set to
379379+#: clipboard, selecting text with the mouse will cause the text to be
380380+#: copied to clipboard. Useful on platforms such as macOS that do not
381381+#: have the concept of primary selection. You can instead specify a
382382+#: name such as a1 to copy to a private kitty buffer. Map a shortcut
383383+#: with the paste_from_buffer action to paste from this private
384384+#: buffer. For example::
385385+386386+#: copy_on_select a1
387387+#: map shift+cmd+v paste_from_buffer a1
388388+389389+#: Note that copying to the clipboard is a security risk, as all
390390+#: programs, including websites open in your browser can read the
391391+#: contents of the system clipboard.
392392+393393+# paste_actions quote-urls-at-prompt
394394+395395+#: A comma separated list of actions to take when pasting text into
396396+#: the terminal. The supported paste actions are:
397397+398398+#: quote-urls-at-prompt:
399399+#: If the text being pasted is a URL and the cursor is at a shell prompt,
400400+#: automatically quote the URL (needs shell_integration).
401401+#: confirm:
402402+#: Confirm the paste if bracketed paste mode is not active or there is more
403403+#: a large amount of text being pasted.
404404+#: filter:
405405+#: Run the filter_paste() function from the file paste-actions.py in
406406+#: the kitty config directory on the pasted text. The text returned by the
407407+#: function will be actually pasted.
408408+409409+# strip_trailing_spaces never
410410+411411+#: Remove spaces at the end of lines when copying to clipboard. A
412412+#: value of smart will do it when using normal selections, but not
413413+#: rectangle selections. A value of always will always do it.
414414+415415+# select_by_word_characters @-./_~?&=%+#
416416+417417+#: Characters considered part of a word when double clicking. In
418418+#: addition to these characters any character that is marked as an
419419+#: alphanumeric character in the Unicode database will be matched.
420420+421421+# select_by_word_characters_forward
422422+423423+#: Characters considered part of a word when extending the selection
424424+#: forward on double clicking. In addition to these characters any
425425+#: character that is marked as an alphanumeric character in the
426426+#: Unicode database will be matched.
427427+428428+#: If empty (default) select_by_word_characters will be used for both
429429+#: directions.
430430+431431+# click_interval -1.0
432432+433433+#: The interval between successive clicks to detect double/triple
434434+#: clicks (in seconds). Negative numbers will use the system default
435435+#: instead, if available, or fallback to 0.5.
436436+437437+# focus_follows_mouse no
438438+439439+#: Set the active window to the window under the mouse when moving the
440440+#: mouse around.
441441+442442+# pointer_shape_when_grabbed arrow
443443+444444+#: The shape of the mouse pointer when the program running in the
445445+#: terminal grabs the mouse. Valid values are: arrow, beam and hand.
446446+447447+# default_pointer_shape beam
448448+449449+#: The default shape of the mouse pointer. Valid values are: arrow,
450450+#: beam and hand.
451451+452452+# pointer_shape_when_dragging beam
453453+454454+#: The default shape of the mouse pointer when dragging across text.
455455+#: Valid values are: arrow, beam and hand.
456456+457457+#: Mouse actions {{{
458458+459459+#: Mouse buttons can be mapped to perform arbitrary actions. The
460460+#: syntax is:
461461+462462+#: .. code-block:: none
463463+464464+#: mouse_map button-name event-type modes action
465465+466466+#: Where button-name is one of left, middle, right, b1 ... b8 with
467467+#: added keyboard modifiers. For example: ctrl+shift+left refers to
468468+#: holding the Ctrl+Shift keys while clicking with the left mouse
469469+#: button. The value b1 ... b8 can be used to refer to up to eight
470470+#: buttons on a mouse.
471471+472472+#: event-type is one of press, release, doublepress, triplepress,
473473+#: click, doubleclick. modes indicates whether the action is performed
474474+#: when the mouse is grabbed by the program running in the terminal,
475475+#: or not. The values are grabbed or ungrabbed or a comma separated
476476+#: combination of them. grabbed refers to when the program running in
477477+#: the terminal has requested mouse events. Note that the click and
478478+#: double click events have a delay of click_interval to disambiguate
479479+#: from double and triple presses.
480480+481481+#: You can run kitty with the kitty --debug-input command line option
482482+#: to see mouse events. See the builtin actions below to get a sense
483483+#: of what is possible.
484484+485485+#: If you want to unmap an action, map it to no_op. For example, to
486486+#: disable opening of URLs with a plain click::
487487+488488+#: mouse_map left click ungrabbed no_op
489489+490490+#: See all the mappable actions including mouse actions here
491491+#: <https://sw.kovidgoyal.net/kitty/actions/>.
492492+493493+#: .. note::
494494+#: Once a selection is started, releasing the button that started it will
495495+#: automatically end it and no release event will be dispatched.
496496+497497+# clear_all_mouse_actions no
498498+499499+#: Remove all mouse action definitions up to this point. Useful, for
500500+#: instance, to remove the default mouse actions.
501501+502502+#: Click the link under the mouse or move the cursor
503503+504504+# mouse_map left click ungrabbed mouse_handle_click selection link prompt
505505+506506+#:: First check for a selection and if one exists do nothing. Then
507507+#:: check for a link under the mouse cursor and if one exists, click
508508+#:: it. Finally check if the click happened at the current shell
509509+#:: prompt and if so, move the cursor to the click location. Note
510510+#:: that this requires shell integration
511511+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
512512+513513+#: Click the link under the mouse or move the cursor even when grabbed
514514+515515+# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt
516516+517517+#:: Same as above, except that the action is performed even when the
518518+#:: mouse is grabbed by the program running in the terminal.
519519+520520+#: Click the link under the mouse cursor
521521+522522+# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link
523523+524524+#:: Variant with Ctrl+Shift is present because the simple click based
525525+#:: version has an unavoidable delay of click_interval, to
526526+#:: disambiguate clicks from double clicks.
527527+528528+#: Discard press event for link click
529529+530530+# mouse_map ctrl+shift+left press grabbed discard_event
531531+532532+#:: Prevent this press event from being sent to the program that has
533533+#:: grabbed the mouse, as the corresponding release event is used to
534534+#:: open a URL.
535535+536536+#: Paste from the primary selection
537537+538538+# mouse_map middle release ungrabbed paste_from_selection
539539+540540+#: Start selecting text
541541+542542+# mouse_map left press ungrabbed mouse_selection normal
543543+544544+#: Start selecting text in a rectangle
545545+546546+# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
547547+548548+#: Select a word
549549+550550+# mouse_map left doublepress ungrabbed mouse_selection word
551551+552552+#: Select a line
553553+554554+# mouse_map left triplepress ungrabbed mouse_selection line
555555+556556+#: Select line from point
557557+558558+# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point
559559+560560+#:: Select from the clicked point to the end of the line.
561561+562562+#: Extend the current selection
563563+564564+# mouse_map right press ungrabbed mouse_selection extend
565565+566566+#:: If you want only the end of the selection to be moved instead of
567567+#:: the nearest boundary, use move-end instead of extend.
568568+569569+#: Paste from the primary selection even when grabbed
570570+571571+# mouse_map shift+middle release ungrabbed,grabbed paste_selection
572572+# mouse_map shift+middle press grabbed discard_event
573573+574574+#: Start selecting text even when grabbed
575575+576576+# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal
577577+578578+#: Start selecting text in a rectangle even when grabbed
579579+580580+# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle
581581+582582+#: Select a word even when grabbed
583583+584584+# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word
585585+586586+#: Select a line even when grabbed
587587+588588+# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line
589589+590590+#: Select line from point even when grabbed
591591+592592+# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point
593593+594594+#:: Select from the clicked point to the end of the line even when
595595+#:: grabbed.
596596+597597+#: Extend the current selection even when grabbed
598598+599599+# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend
600600+601601+#: Show clicked command output in pager
602602+603603+# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output
604604+605605+#:: Requires shell integration
606606+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
607607+608608+#: }}}
609609+610610+#: }}}
611611+612612+#: Performance tuning {{{
613613+614614+# repaint_delay 10
615615+616616+#: Delay between screen updates (in milliseconds). Decreasing it,
617617+#: increases frames-per-second (FPS) at the cost of more CPU usage.
618618+#: The default value yields ~100 FPS which is more than sufficient for
619619+#: most uses. Note that to actually achieve 100 FPS, you have to
620620+#: either set sync_to_monitor to no or use a monitor with a high
621621+#: refresh rate. Also, to minimize latency when there is pending input
622622+#: to be processed, this option is ignored.
623623+624624+# input_delay 3
625625+626626+#: Delay before input from the program running in the terminal is
627627+#: processed (in milliseconds). Note that decreasing it will increase
628628+#: responsiveness, but also increase CPU usage and might cause flicker
629629+#: in full screen programs that redraw the entire screen on each loop,
630630+#: because kitty is so fast that partial screen updates will be drawn.
631631+632632+# sync_to_monitor yes
633633+634634+#: Sync screen updates to the refresh rate of the monitor. This
635635+#: prevents screen tearing
636636+#: <https://en.wikipedia.org/wiki/Screen_tearing> when scrolling.
637637+#: However, it limits the rendering speed to the refresh rate of your
638638+#: monitor. With a very high speed mouse/high keyboard repeat rate,
639639+#: you may notice some slight input latency. If so, set this to no.
640640+641641+#: }}}
642642+643643+#: Terminal bell {{{
644644+645645+# enable_audio_bell yes
646646+647647+#: The audio bell. Useful to disable it in environments that require
648648+#: silence.
649649+650650+# visual_bell_duration 0.0
651651+652652+#: The visual bell duration (in seconds). Flash the screen when a bell
653653+#: occurs for the specified number of seconds. Set to zero to disable.
654654+655655+# visual_bell_color none
656656+657657+#: The color used by visual bell. Set to none will fall back to
658658+#: selection background color. If you feel that the visual bell is too
659659+#: bright, you can set it to a darker color.
660660+661661+# window_alert_on_bell yes
662662+663663+#: Request window attention on bell. Makes the dock icon bounce on
664664+#: macOS or the taskbar flash on linux.
665665+666666+# bell_on_tab "🔔 "
667667+668668+#: Some text or a Unicode symbol to show on the tab if a window in the
669669+#: tab that does not have focus has a bell. If you want to use leading
670670+#: or trailing spaces, surround the text with quotes. See
671671+#: tab_title_template for how this is rendered.
672672+673673+#: For backwards compatibility, values of yes, y and true are
674674+#: converted to the default bell symbol and no, n, false and none are
675675+#: converted to the empty string.
676676+677677+# command_on_bell none
678678+679679+#: Program to run when a bell occurs. The environment variable
680680+#: KITTY_CHILD_CMDLINE can be used to get the program running in the
681681+#: window in which the bell occurred.
682682+683683+# bell_path none
684684+685685+#: Path to a sound file to play as the bell sound. If set to none, the
686686+#: system default bell sound is used. Must be in a format supported by
687687+#: the operating systems sound API, such as WAV or OGA on Linux
688688+#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound)
689689+690690+#: }}}
691691+692692+#: Window layout {{{
693693+694694+# remember_window_size yes
695695+# initial_window_width 640
696696+# initial_window_height 400
697697+698698+#: If enabled, the window size will be remembered so that new
699699+#: instances of kitty will have the same size as the previous
700700+#: instance. If disabled, the window will initially have size
701701+#: configured by initial_window_width/height, in pixels. You can use a
702702+#: suffix of "c" on the width/height values to have them interpreted
703703+#: as number of cells instead of pixels.
704704+705705+# enabled_layouts *
706706+707707+#: The enabled window layouts. A comma separated list of layout names.
708708+#: The special value all means all layouts. The first listed layout
709709+#: will be used as the startup layout. Default configuration is all
710710+#: layouts in alphabetical order. For a list of available layouts, see
711711+#: the layouts <https://sw.kovidgoyal.net/kitty/overview/#layouts>.
712712+713713+# window_resize_step_cells 2
714714+# window_resize_step_lines 2
715715+716716+#: The step size (in units of cell width/cell height) to use when
717717+#: resizing kitty windows in a layout with the shortcut
718718+#: start_resizing_window. The cells value is used for horizontal
719719+#: resizing, and the lines value is used for vertical resizing.
720720+721721+# window_border_width 0.5pt
722722+723723+#: The width of window borders. Can be either in pixels (px) or pts
724724+#: (pt). Values in pts will be rounded to the nearest number of pixels
725725+#: based on screen resolution. If not specified, the unit is assumed
726726+#: to be pts. Note that borders are displayed only when more than one
727727+#: window is visible. They are meant to separate multiple windows.
728728+729729+# draw_minimal_borders yes
730730+731731+#: Draw only the minimum borders needed. This means that only the
732732+#: borders that separate the inactive window from a neighbor are
733733+#: drawn. Note that setting a non-zero window_margin_width overrides
734734+#: this and causes all borders to be drawn.
735735+736736+# window_margin_width 0
737737+738738+#: The window margin (in pts) (blank area outside the border). A
739739+#: single value sets all four sides. Two values set the vertical and
740740+#: horizontal sides. Three values set top, horizontal and bottom. Four
741741+#: values set top, right, bottom and left.
742742+743743+# single_window_margin_width -1
744744+745745+#: The window margin to use when only a single window is visible (in
746746+#: pts). Negative values will cause the value of window_margin_width
747747+#: to be used instead. A single value sets all four sides. Two values
748748+#: set the vertical and horizontal sides. Three values set top,
749749+#: horizontal and bottom. Four values set top, right, bottom and left.
750750+751751+# window_padding_width 0
752752+753753+#: The window padding (in pts) (blank area between the text and the
754754+#: window border). A single value sets all four sides. Two values set
755755+#: the vertical and horizontal sides. Three values set top, horizontal
756756+#: and bottom. Four values set top, right, bottom and left.
757757+758758+# placement_strategy center
759759+760760+#: When the window size is not an exact multiple of the cell size, the
761761+#: cell area of the terminal window will have some extra padding on
762762+#: the sides. You can control how that padding is distributed with
763763+#: this option. Using a value of center means the cell area will be
764764+#: placed centrally. A value of top-left means the padding will be
765765+#: only at the bottom and right edges.
766766+767767+# active_border_color #00ff00
768768+769769+#: The color for the border of the active window. Set this to none to
770770+#: not draw borders around the active window.
771771+772772+# inactive_border_color #cccccc
773773+774774+#: The color for the border of inactive windows.
775775+776776+# bell_border_color #ff5a00
777777+778778+#: The color for the border of inactive windows in which a bell has
779779+#: occurred.
780780+781781+# inactive_text_alpha 1.0
782782+783783+#: Fade the text in inactive windows by the specified amount (a number
784784+#: between zero and one, with zero being fully faded).
785785+786786+# hide_window_decorations no
787787+788788+#: Hide the window decorations (title-bar and window borders) with
789789+#: yes. On macOS, titlebar-only can be used to only hide the titlebar.
790790+#: Whether this works and exactly what effect it has depends on the
791791+#: window manager/operating system. Note that the effects of changing
792792+#: this option when reloading config are undefined.
793793+794794+# window_logo_path none
795795+796796+#: Path to a logo image. Must be in PNG format. Relative paths are
797797+#: interpreted relative to the kitty config directory. The logo is
798798+#: displayed in a corner of every kitty window. The position is
799799+#: controlled by window_logo_position. Individual windows can be
800800+#: configured to have different logos either using the launch action
801801+#: or the remote control <https://sw.kovidgoyal.net/kitty/remote-
802802+#: control/> facility.
803803+804804+# window_logo_position bottom-right
805805+806806+#: Where to position the window logo in the window. The value can be
807807+#: one of: top-left, top, top-right, left, center, right, bottom-left,
808808+#: bottom, bottom-right.
809809+810810+# window_logo_alpha 0.5
811811+812812+#: The amount the logo should be faded into the background. With zero
813813+#: being fully faded and one being fully opaque.
814814+815815+# resize_debounce_time 0.1
816816+817817+#: The time to wait before redrawing the screen when a resize event is
818818+#: received (in seconds). On platforms such as macOS, where the
819819+#: operating system sends events corresponding to the start and end of
820820+#: a resize, this number is ignored.
821821+822822+# resize_draw_strategy static
823823+824824+#: Choose how kitty draws a window while a resize is in progress. A
825825+#: value of static means draw the current window contents, mostly
826826+#: unchanged. A value of scale means draw the current window contents
827827+#: scaled. A value of blank means draw a blank window. A value of size
828828+#: means show the window size in cells.
829829+830830+resize_in_steps yes
831831+832832+#: Resize the OS window in steps as large as the cells, instead of
833833+#: with the usual pixel accuracy. Combined with initial_window_width
834834+#: and initial_window_height in number of cells, this option can be
835835+#: used to keep the margins as small as possible when resizing the OS
836836+#: window. Note that this does not currently work on Wayland.
837837+838838+# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
839839+840840+#: The list of characters for visual window selection. For example,
841841+#: for selecting a window to focus on with focus_visible_window. The
842842+#: value should be a series of unique numbers or alphabets, case
843843+#: insensitive, from the set [0-9A-Z]. Specify your preference as a
844844+#: string of characters.
845845+846846+# confirm_os_window_close -1
847847+848848+#: Ask for confirmation when closing an OS window or a tab with at
849849+#: least this number of kitty windows in it by window manager (e.g.
850850+#: clicking the window close button or pressing the operating system
851851+#: shortcut to close windows) or by the close_tab action. A value of
852852+#: zero disables confirmation. This confirmation also applies to
853853+#: requests to quit the entire application (all OS windows, via the
854854+#: quit action). Negative values are converted to positive ones,
855855+#: however, with shell_integration enabled, using negative values
856856+#: means windows sitting at a shell prompt are not counted, only
857857+#: windows where some command is currently running. Note that if you
858858+#: want confirmation when closing individual windows, you can map the
859859+#: close_window_with_confirmation action.
860860+861861+#: }}}
862862+863863+#: Tab bar {{{
864864+865865+# tab_bar_edge bottom
866866+867867+#: The edge to show the tab bar on, top or bottom.
868868+869869+# tab_bar_margin_width 0.0
870870+871871+#: The margin to the left and right of the tab bar (in pts).
872872+873873+# tab_bar_margin_height 0.0 0.0
874874+875875+#: The margin above and below the tab bar (in pts). The first number
876876+#: is the margin between the edge of the OS Window and the tab bar.
877877+#: The second number is the margin between the tab bar and the
878878+#: contents of the current tab.
879879+880880+# tab_bar_style fade
881881+882882+#: The tab bar style, can be one of:
883883+884884+#: fade
885885+#: Each tab's edges fade into the background color. (See also tab_fade)
886886+#: slant
887887+#: Tabs look like the tabs in a physical file.
888888+#: separator
889889+#: Tabs are separated by a configurable separator. (See also
890890+#: tab_separator)
891891+#: powerline
892892+#: Tabs are shown as a continuous line with "fancy" separators.
893893+#: (See also tab_powerline_style)
894894+#: custom
895895+#: A user-supplied Python function called draw_tab is loaded from the file
896896+#: tab_bar.py in the kitty config directory. For examples of how to
897897+#: write such a function, see the functions named draw_tab_with_* in
898898+#: kitty's source code: kitty/tab_bar.py. See also
899899+#: this discussion <https://github.com/kovidgoyal/kitty/discussions/4447>
900900+#: for examples from kitty users.
901901+#: hidden
902902+#: The tab bar is hidden. If you use this, you might want to create a mapping
903903+#: for the select_tab action which presents you with a list of tabs and
904904+#: allows for easy switching to a tab.
905905+906906+# tab_bar_align left
907907+908908+#: The horizontal alignment of the tab bar, can be one of: left,
909909+#: center, right.
910910+911911+# tab_bar_min_tabs 2
912912+913913+#: The minimum number of tabs that must exist before the tab bar is
914914+#: shown.
915915+916916+# tab_switch_strategy previous
917917+918918+#: The algorithm to use when switching to a tab when the current tab
919919+#: is closed. The default of previous will switch to the last used
920920+#: tab. A value of left will switch to the tab to the left of the
921921+#: closed tab. A value of right will switch to the tab to the right of
922922+#: the closed tab. A value of last will switch to the right-most tab.
923923+924924+# tab_fade 0.25 0.5 0.75 1
925925+926926+#: Control how each tab fades into the background when using fade for
927927+#: the tab_bar_style. Each number is an alpha (between zero and one)
928928+#: that controls how much the corresponding cell fades into the
929929+#: background, with zero being no fade and one being full fade. You
930930+#: can change the number of cells used by adding/removing entries to
931931+#: this list.
932932+933933+# tab_separator " ┇"
934934+935935+#: The separator between tabs in the tab bar when using separator as
936936+#: the tab_bar_style.
937937+938938+# tab_powerline_style angled
939939+940940+#: The powerline separator style between tabs in the tab bar when
941941+#: using powerline as the tab_bar_style, can be one of: angled,
942942+#: slanted, round.
943943+944944+# tab_activity_symbol none
945945+946946+#: Some text or a Unicode symbol to show on the tab if a window in the
947947+#: tab that does not have focus has some activity. If you want to use
948948+#: leading or trailing spaces, surround the text with quotes. See
949949+#: tab_title_template for how this is rendered.
950950+951951+# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"
952952+953953+#: A template to render the tab title. The default just renders the
954954+#: title with optional symbols for bell and activity. If you wish to
955955+#: include the tab-index as well, use something like: {index}:{title}.
956956+#: Useful if you have shortcuts mapped for goto_tab N. If you prefer
957957+#: to see the index as a superscript, use {sup.index}. All data
958958+#: available is:
959959+960960+#: title
961961+#: The current tab title.
962962+#: index
963963+#: The tab index useable with goto_tab N goto_tab shortcuts.
964964+#: layout_name
965965+#: The current layout name.
966966+#: num_windows
967967+#: The number of windows in the tab.
968968+#: num_window_groups
969969+#: The number of window groups (not counting overlay windows) in the tab.
970970+#: tab.active_wd
971971+#: The working directory of the currently active window in the tab (expensive,
972972+#: requires syscall).
973973+#: max_title_length
974974+#: The maximum title length available.
975975+976976+#: Note that formatting is done by Python's string formatting
977977+#: machinery, so you can use, for instance, {layout_name[:2].upper()}
978978+#: to show only the first two letters of the layout name, upper-cased.
979979+#: If you want to style the text, you can use styling directives, for
980980+#: example:
981981+#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`.
982982+#: Similarly, for bold and italic:
983983+#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`.
984984+#: Note that for backward compatibility, if {bell_symbol} or
985985+#: {activity_symbol} are not present in the template, they are
986986+#: prepended to it.
987987+988988+# active_tab_title_template none
989989+990990+#: Template to use for active tabs. If not specified falls back to
991991+#: tab_title_template.
992992+993993+# active_tab_foreground #000
994994+# active_tab_background #eee
995995+# active_tab_font_style bold-italic
996996+# inactive_tab_foreground #444
997997+# inactive_tab_background #999
998998+# inactive_tab_font_style normal
999999+10001000+#: Tab bar colors and styles.
10011001+10021002+# tab_bar_background none
10031003+10041004+#: Background color for the tab bar. Defaults to using the terminal
10051005+#: background color.
10061006+10071007+# tab_bar_margin_color none
10081008+10091009+#: Color for the tab bar margin area. Defaults to using the terminal
10101010+#: background color.
10111011+10121012+#: }}}
10131013+10141014+#: Color scheme {{{
10151015+10161016+# foreground #dddddd
10171017+# background #000000
10181018+10191019+#: The foreground and background colors.
10201020+10211021+# background_opacity 0.9
10221022+10231023+#: The opacity of the background. A number between zero and one, where
10241024+#: one is opaque and zero is fully transparent. This will only work if
10251025+#: supported by the OS (for instance, when using a compositor under
10261026+#: X11). Note that it only sets the background color's opacity in
10271027+#: cells that have the same background color as the default terminal
10281028+#: background, so that things like the status bar in vim, powerline
10291029+#: prompts, etc. still look good. But it means that if you use a color
10301030+#: theme with a background color in your editor, it will not be
10311031+#: rendered as transparent. Instead you should change the default
10321032+#: background color in your kitty config and not use a background
10331033+#: color in the editor color scheme. Or use the escape codes to set
10341034+#: the terminals default colors in a shell script to launch your
10351035+#: editor. Be aware that using a value less than 1.0 is a (possibly
10361036+#: significant) performance hit. If you want to dynamically change
10371037+#: transparency of windows, set dynamic_background_opacity to yes
10381038+#: (this is off by default as it has a performance cost). Changing
10391039+#: this option when reloading the config will only work if
10401040+#: dynamic_background_opacity was enabled in the original config.
10411041+10421042+# background_image none
10431043+10441044+#: Path to a background image. Must be in PNG format.
10451045+10461046+# background_image_layout tiled
10471047+10481048+#: Whether to tile, scale or clamp the background image. The value can
10491049+#: be one of tiled, mirror-tiled, scaled, clamped or centered.
10501050+10511051+# background_image_linear no
10521052+10531053+#: When background image is scaled, whether linear interpolation
10541054+#: should be used.
10551055+10561056+# dynamic_background_opacity no
10571057+10581058+#: Allow changing of the background_opacity dynamically, using either
10591059+#: keyboard shortcuts (increase_background_opacity and
10601060+#: decrease_background_opacity) or the remote control facility.
10611061+#: Changing this option by reloading the config is not supported.
10621062+10631063+# background_tint 0.0
10641064+10651065+#: How much to tint the background image by the background color.
10661066+#: This option makes it easier to read the text. Tinting is done using
10671067+#: the current background color for each window. This option applies
10681068+#: only if background_opacity is set and transparent windows are
10691069+#: supported or background_image is set.
10701070+10711071+# dim_opacity 0.75
10721072+10731073+#: How much to dim text that has the DIM/FAINT attribute set. One
10741074+#: means no dimming and zero means fully dimmed (i.e. invisible).
10751075+10761076+# selection_foreground #000000
10771077+# selection_background #fffacd
10781078+10791079+#: The foreground and background colors for text selected with the
10801080+#: mouse. Setting both of these to none will cause a "reverse video"
10811081+#: effect for selections, where the selection will be the cell text
10821082+#: color and the text will become the cell background color. Setting
10831083+#: only selection_foreground to none will cause the foreground color
10841084+#: to be used unchanged. Note that these colors can be overridden by
10851085+#: the program running in the terminal.
10861086+10871087+#: The color table {{{
10881088+10891089+#: The 256 terminal colors. There are 8 basic colors, each color has a
10901090+#: dull and bright version, for the first 16 colors. You can set the
10911091+#: remaining 240 colors as color16 to color255.
10921092+10931093+# color0 #000000
10941094+# color8 #767676
10951095+10961096+#: black
10971097+10981098+# color1 #cc0403
10991099+# color9 #f2201f
11001100+11011101+#: red
11021102+11031103+# color2 #19cb00
11041104+# color10 #23fd00
11051105+11061106+#: green
11071107+11081108+# color3 #cecb00
11091109+# color11 #fffd00
11101110+11111111+#: yellow
11121112+11131113+# color4 #0d73cc
11141114+# color12 #1a8fff
11151115+11161116+#: blue
11171117+11181118+# color5 #cb1ed1
11191119+# color13 #fd28ff
11201120+11211121+#: magenta
11221122+11231123+# color6 #0dcdcd
11241124+# color14 #14ffff
11251125+11261126+#: cyan
11271127+11281128+# color7 #dddddd
11291129+# color15 #ffffff
11301130+11311131+#: white
11321132+11331133+# mark1_foreground black
11341134+11351135+#: Color for marks of type 1
11361136+11371137+# mark1_background #98d3cb
11381138+11391139+#: Color for marks of type 1 (light steel blue)
11401140+11411141+# mark2_foreground black
11421142+11431143+#: Color for marks of type 2
11441144+11451145+# mark2_background #f2dcd3
11461146+11471147+#: Color for marks of type 1 (beige)
11481148+11491149+# mark3_foreground black
11501150+11511151+#: Color for marks of type 3
11521152+11531153+# mark3_background #f274bc
11541154+11551155+#: Color for marks of type 3 (violet)
11561156+11571157+#: }}}
11581158+11591159+#: }}}
11601160+11611161+#: Advanced {{{
11621162+11631163+# shell .
11641164+11651165+#: The shell program to execute. The default value of . means to use
11661166+#: whatever shell is set as the default shell for the current user.
11671167+#: Note that on macOS if you change this, you might need to add
11681168+#: --login and --interactive to ensure that the shell starts in
11691169+#: interactive mode and reads its startup rc files.
11701170+11711171+# editor .
11721172+11731173+#: The terminal based text editor (such as vim or nano) to use when
11741174+#: editing the kitty config file or similar tasks.
11751175+11761176+#: The default value of . means to use the environment variables
11771177+#: VISUAL and EDITOR in that order. If these variables aren't set,
11781178+#: kitty will run your shell ($SHELL -l -i -c env) to see if your
11791179+#: shell startup rc files set VISUAL or EDITOR. If that doesn't work,
11801180+#: kitty will cycle through various known editors (vim, emacs, etc.)
11811181+#: and take the first one that exists on your system.
11821182+11831183+# close_on_child_death no
11841184+11851185+#: Close the window when the child process (shell) exits. With the
11861186+#: default value no, the terminal will remain open when the child
11871187+#: exits as long as there are still processes outputting to the
11881188+#: terminal (for example disowned or backgrounded processes). When
11891189+#: enabled with yes, the window will close as soon as the child
11901190+#: process exits. Note that setting it to yes means that any
11911191+#: background processes still using the terminal can fail silently
11921192+#: because their stdout/stderr/stdin no longer work.
11931193+11941194+# remote_control_password
11951195+11961196+#: Allow other programs to control kitty using passwords. This option
11971197+#: can be specified multiple times to add multiple passwords. If no
11981198+#: passwords are present kitty will ask the user for permission if a
11991199+#: program tries to use remote control with a password. A password can
12001200+#: also *optionally* be associated with a set of allowed remote
12011201+#: control actions. For example::
12021202+12031203+#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab
12041204+12051205+#: Only the specified actions will be allowed when using this
12061206+#: password. Glob patterns can be used too, for example::
12071207+12081208+#: remote_control_password "my passphrase" set-tab-* resize-*
12091209+12101210+#: To get a list of available actions, run::
12111211+12121212+#: kitty @ --help
12131213+12141214+#: A set of actions to be allowed when no password is sent can be
12151215+#: specified by using an empty password, for example::
12161216+12171217+#: remote_control_password "" *-colors
12181218+12191219+#: Finally, the path to a python module can be specified that provides
12201220+#: a function is_cmd_allowed that is used to check every remote
12211221+#: control command. See rc_custom_auth
12221222+#: <https://sw.kovidgoyal.net/kitty/remote-control/#rc-custom-auth>
12231223+#: for details. For example::
12241224+12251225+#: remote_control_password "my passphrase" my_rc_command_checker.py
12261226+12271227+#: Relative paths are resolved from the kitty configuration directory.
12281228+12291229+# allow_remote_control no
12301230+12311231+#: Allow other programs to control kitty. If you turn this on, other
12321232+#: programs can control all aspects of kitty, including sending text
12331233+#: to kitty windows, opening new windows, closing windows, reading the
12341234+#: content of windows, etc. Note that this even works over SSH
12351235+#: connections. The default setting of no prevents any form of remote
12361236+#: control. The meaning of the various values are:
12371237+12381238+#: password
12391239+#: Remote control requests received over both the TTY device and the socket are
12401240+#: confirmed based on passwords, see remote_control_password.
12411241+12421242+#: socket-only
12431243+#: Remote control requests received over a socket are accepted unconditionally.
12441244+#: Requests received over the TTY are denied. See listen_on.
12451245+12461246+#: socket
12471247+#: Remote control requests received over a socket are accepted unconditionally.
12481248+#: Requests received over the TTY are confirmed based on password.
12491249+12501250+#: no
12511251+#: Remote control is completely disabled.
12521252+12531253+#: yes
12541254+#: Remote control requests are always accepted.
12551255+12561256+# listen_on none
12571257+12581258+#: Listen to the specified UNIX socket for remote control connections.
12591259+#: Note that this will apply to all kitty instances. It can be
12601260+#: overridden by the kitty --listen-on command line option, which also
12611261+#: supports listening on a TCP socket. This option accepts only UNIX
12621262+#: sockets, such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux).
12631263+#: Environment variables are expanded and relative paths are resolved
12641264+#: with respect to the temporary directory. If {kitty_pid} is present,
12651265+#: then it is replaced by the PID of the kitty process, otherwise the
12661266+#: PID of the kitty process is appended to the value, with a hyphen.
12671267+#: See the help for kitty --listen-on for more details. Note that this
12681268+#: will be ignored unless allow_remote_control is set to either: yes,
12691269+#: socket or socket-only. Changing this option by reloading the config
12701270+#: is not supported.
12711271+12721272+# env
12731273+12741274+#: Specify the environment variables to be set in all child processes.
12751275+#: Using the name with an equal sign (e.g. env VAR=) will set it to
12761276+#: the empty string. Specifying only the name (e.g. env VAR) will
12771277+#: remove the variable from the child process' environment. Note that
12781278+#: environment variables are expanded recursively, for example::
12791279+12801280+#: env VAR1=a
12811281+#: env VAR2=${HOME}/${VAR1}/b
12821282+12831283+#: The value of VAR2 will be <path to home directory>/a/b.
12841284+12851285+# watcher
12861286+12871287+#: Path to python file which will be loaded for watchers
12881288+#: <https://sw.kovidgoyal.net/kitty/launch/#watchers>. Can be
12891289+#: specified more than once to load multiple watchers. The watchers
12901290+#: will be added to every kitty window. Relative paths are resolved
12911291+#: relative to the kitty config directory. Note that reloading the
12921292+#: config will only affect windows created after the reload.
12931293+12941294+# exe_search_path
12951295+12961296+#: Control where kitty finds the programs to run. The default search
12971297+#: order is: First search the system wide PATH, then ~/.local/bin and
12981298+#: ~/bin. If still not found, the PATH defined in the login shell
12991299+#: after sourcing all its startup files is tried. Finally, if present,
13001300+#: the PATH specified by the env option is tried.
13011301+13021302+#: This option allows you to prepend, append, or remove paths from
13031303+#: this search order. It can be specified multiple times for multiple
13041304+#: paths. A simple path will be prepended to the search order. A path
13051305+#: that starts with the + sign will be append to the search order,
13061306+#: after ~/bin above. A path that starts with the - sign will be
13071307+#: removed from the entire search order. For example::
13081308+13091309+#: exe_search_path /some/prepended/path
13101310+#: exe_search_path +/some/appended/path
13111311+#: exe_search_path -/some/excluded/path
13121312+13131313+# update_check_interval 24
13141314+13151315+#: The interval to periodically check if an update to kitty is
13161316+#: available (in hours). If an update is found, a system notification
13171317+#: is displayed informing you of the available update. The default is
13181318+#: to check every 24 hours, set to zero to disable. Update checking is
13191319+#: only done by the official binary builds. Distro packages or source
13201320+#: builds do not do update checking. Changing this option by reloading
13211321+#: the config is not supported.
13221322+13231323+# startup_session none
13241324+13251325+#: Path to a session file to use for all kitty instances. Can be
13261326+#: overridden by using the kitty --session command line option for
13271327+#: individual instances. See sessions
13281328+#: <https://sw.kovidgoyal.net/kitty/overview/#sessions> in the kitty
13291329+#: documentation for details. Note that relative paths are interpreted
13301330+#: with respect to the kitty config directory. Environment variables
13311331+#: in the path are expanded. Changing this option by reloading the
13321332+#: config is not supported.
13331333+13341334+# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask
13351335+13361336+#: Allow programs running in kitty to read and write from the
13371337+#: clipboard. You can control exactly which actions are allowed. The
13381338+#: possible actions are: write-clipboard, read-clipboard, write-
13391339+#: primary, read-primary, read-clipboard-ask, read-primary-ask. The
13401340+#: default is to allow writing to the clipboard and primary selection
13411341+#: and to ask for permission when a program tries to read from the
13421342+#: clipboard. Note that disabling the read confirmation is a security
13431343+#: risk as it means that any program, even the ones running on a
13441344+#: remote server via SSH can read your clipboard. See also
13451345+#: clipboard_max_size.
13461346+13471347+# clipboard_max_size 64
13481348+13491349+#: The maximum size (in MB) of data from programs running in kitty
13501350+#: that will be stored for writing to the system clipboard. A value of
13511351+#: zero means no size limit is applied. See also clipboard_control.
13521352+13531353+# file_transfer_confirmation_bypass
13541354+13551355+#: The password that can be supplied to the file transfer kitten
13561356+#: <https://sw.kovidgoyal.net/kitty/kittens/transfer/> to skip the
13571357+#: transfer confirmation prompt. This should only be used when
13581358+#: initiating transfers from trusted computers, over trusted networks
13591359+#: or encrypted transports, as it allows any programs running on the
13601360+#: remote machine to read/write to the local filesystem, without
13611361+#: permission.
13621362+13631363+# allow_hyperlinks yes
13641364+13651365+#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8
13661366+#: escape sequences are ignored. Otherwise they become clickable
13671367+#: links, that you can click with the mouse or by using the hints
13681368+#: kitten <https://sw.kovidgoyal.net/kitty/kittens/hints/>. The
13691369+#: special value of ask means that kitty will ask before opening the
13701370+#: link when clicked.
13711371+13721372+# shell_integration enabled
13731373+13741374+#: Enable shell integration on supported shells. This enables features
13751375+#: such as jumping to previous prompts, browsing the output of the
13761376+#: previous command in a pager, etc. on supported shells. Set to
13771377+#: disabled to turn off shell integration, completely. It is also
13781378+#: possible to disable individual features, set to a space separated
13791379+#: list of these values: no-rc, no-cursor, no-title, no-cwd, no-
13801380+#: prompt-mark, no-complete. See Shell integration
13811381+#: <https://sw.kovidgoyal.net/kitty/shell-integration/> for details.
13821382+13831383+# allow_cloning ask
13841384+13851385+#: Control whether programs running in the terminal can request new
13861386+#: windows to be created. The canonical example is clone-in-kitty
13871387+#: <https://sw.kovidgoyal.net/kitty/shell-integration/#clone-shell>.
13881388+#: By default, kitty will ask for permission for each clone request.
13891389+#: Allowing cloning unconditionally gives programs running in the
13901390+#: terminal (including over SSH) permission to execute arbitrary code,
13911391+#: as the user who is running the terminal, on the computer that the
13921392+#: terminal is running on.
13931393+13941394+# clone_source_strategies venv,conda,env_var,path
13951395+13961396+#: Control what shell code is sourced when running clone-in-kitty in
13971397+#: the newly cloned window. The supported strategies are:
13981398+13991399+#: venv
14001400+#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the
14011401+#: Python stdlib venv module and allows cloning venvs automatically.
14021402+#: conda
14031403+#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual
14041404+#: environments created by conda.
14051405+#: env_var
14061406+#: Execute the contents of the environment variable
14071407+#: KITTY_CLONE_SOURCE_CODE with eval.
14081408+#: path
14091409+#: Source the file pointed to by the environment variable
14101410+#: KITTY_CLONE_SOURCE_PATH.
14111411+14121412+#: This option must be a comma separated list of the above values.
14131413+#: This only source the first valid one in the above order.
14141414+14151415+# term xterm-kitty
14161416+14171417+#: The value of the TERM environment variable to set. Changing this
14181418+#: can break many terminal programs, only change it if you know what
14191419+#: you are doing, not because you read some advice on "Stack Overflow"
14201420+#: to change it. The TERM variable is used by various programs to get
14211421+#: information about the capabilities and behavior of the terminal. If
14221422+#: you change it, depending on what programs you run, and how
14231423+#: different the terminal you are changing it to is, various things
14241424+#: from key-presses, to colors, to various advanced features may not
14251425+#: work. Changing this option by reloading the config will only affect
14261426+#: newly created windows.
14271427+14281428+#: }}}
14291429+14301430+#: OS specific tweaks {{{
14311431+14321432+wayland_titlebar_color background
14331433+14341434+#: The color of the kitty window's titlebar on Wayland systems with
14351435+#: client side window decorations such as GNOME. A value of system
14361436+#: means to use the default system color, a value of background means
14371437+#: to use the background color of the currently active window and
14381438+#: finally you can use an arbitrary color, such as #12af59 or red.
14391439+14401440+macos_titlebar_color background
14411441+14421442+#: The color of the kitty window's titlebar on macOS. A value of
14431443+#: system means to use the default system color, light or dark can
14441444+#: also be used to set it explicitly. A value of background means to
14451445+#: use the background color of the currently active window and finally
14461446+#: you can use an arbitrary color, such as #12af59 or red. WARNING:
14471447+#: This option works by using a hack when arbitrary color (or
14481448+#: background) is configured, as there is no proper Cocoa API for it.
14491449+#: It sets the background color of the entire window and makes the
14501450+#: titlebar transparent. As such it is incompatible with
14511451+#: background_opacity. If you want to use both, you are probably
14521452+#: better off just hiding the titlebar with hide_window_decorations.
14531453+14541454+# macos_option_as_alt no
14551455+14561456+#: Use the Option key as an Alt key on macOS. With this set to no,
14571457+#: kitty will use the macOS native Option+Key to enter Unicode
14581458+#: character behavior. This will break any Alt+Key keyboard shortcuts
14591459+#: in your terminal programs, but you can use the macOS Unicode input
14601460+#: technique. You can use the values: left, right or both to use only
14611461+#: the left, right or both Option keys as Alt, instead. Note that
14621462+#: kitty itself always treats Option the same as Alt. This means you
14631463+#: cannot use this option to configure different kitty shortcuts for
14641464+#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using
14651465+#: Option/Alt+Key will take priority, so that any such key presses
14661466+#: will not be passed to terminal programs running inside kitty.
14671467+#: Changing this option by reloading the config is not supported.
14681468+14691469+# macos_hide_from_tasks no
14701470+14711471+#: Hide the kitty window from running tasks on macOS (⌘+Tab and the
14721472+#: Dock). Changing this option by reloading the config is not
14731473+#: supported.
14741474+14751475+# macos_quit_when_last_window_closed no
14761476+14771477+#: Have kitty quit when all the top-level windows are closed on macOS.
14781478+#: By default, kitty will stay running, even with no open windows, as
14791479+#: is the expected behavior on macOS.
14801480+14811481+# macos_window_resizable yes
14821482+14831483+#: Disable this if you want kitty top-level OS windows to not be
14841484+#: resizable on macOS. Changing this option by reloading the config
14851485+#: will only affect newly created OS windows.
14861486+14871487+# macos_thicken_font 0
14881488+14891489+#: Draw an extra border around the font with the given width, to
14901490+#: increase legibility at small font sizes on macOS. For example, a
14911491+#: value of 0.75 will result in rendering that looks similar to sub-
14921492+#: pixel antialiasing at common font sizes.
14931493+14941494+# macos_traditional_fullscreen no
14951495+14961496+#: Use the macOS traditional full-screen transition, that is faster,
14971497+#: but less pretty.
14981498+14991499+# macos_show_window_title_in all
15001500+15011501+#: Control where the window title is displayed on macOS. A value of
15021502+#: window will show the title of the currently active window at the
15031503+#: top of the macOS window. A value of menubar will show the title of
15041504+#: the currently active window in the macOS global menu bar, making
15051505+#: use of otherwise wasted space. A value of all will show the title
15061506+#: in both places, and none hides the title. See
15071507+#: macos_menubar_title_max_length for how to control the length of the
15081508+#: title in the menu bar.
15091509+15101510+# macos_menubar_title_max_length 0
15111511+15121512+#: The maximum number of characters from the window title to show in
15131513+#: the macOS global menu bar. Values less than one means that there is
15141514+#: no maximum limit.
15151515+15161516+# macos_custom_beam_cursor no
15171517+15181518+#: Use a custom mouse cursor for macOS that is easier to see on both
15191519+#: light and dark backgrounds. Nowadays, the default macOS cursor
15201520+#: already comes with a white border. WARNING: this might make your
15211521+#: mouse cursor invisible on dual GPU machines. Changing this option
15221522+#: by reloading the config is not supported.
15231523+15241524+# macos_colorspace srgb
15251525+15261526+#: The colorspace in which to interpret terminal colors. The default
15271527+#: of srgb will cause colors to match those seen in web browsers. The
15281528+#: value of default will use whatever the native colorspace of the
15291529+#: display is. The value of displayp3 will use Apple's special
15301530+#: snowflake display P3 color space, which will result in over
15311531+#: saturated (brighter) colors with some color shift. Reloading
15321532+#: configuration will change this value only for newly created OS
15331533+#: windows.
15341534+15351535+# linux_display_server auto
15361536+15371537+#: Choose between Wayland and X11 backends. By default, an appropriate
15381538+#: backend based on the system state is chosen automatically. Set it
15391539+#: to x11 or wayland to force the choice. Changing this option by
15401540+#: reloading the config is not supported.
15411541+15421542+#: }}}
15431543+15441544+#: Keyboard shortcuts {{{
15451545+15461546+#: Keys are identified simply by their lowercase Unicode characters.
15471547+#: For example: a for the A key, [ for the left square bracket key,
15481548+#: etc. For functional keys, such as Enter or Escape, the names are
15491549+#: present at Functional key definitions
15501550+#: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>.
15511551+#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt
15521552+#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods
15531553+#: <https://www.glfw.org/docs/latest/group__mods.html>
15541554+15551555+#: On Linux you can also use XKB key names to bind keys that are not
15561556+#: supported by GLFW. See XKB keys
15571557+#: <https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-
15581558+#: keysyms.h> for a list of key names. The name to use is the part
15591559+#: after the XKB_KEY_ prefix. Note that you can only use an XKB key
15601560+#: name for keys that are not known as GLFW keys.
15611561+15621562+#: Finally, you can use raw system key codes to map keys, again only
15631563+#: for keys that are not known as GLFW keys. To see the system key
15641564+#: code for a key, start kitty with the kitty --debug-input option,
15651565+#: kitty will output some debug text for every key event. In that text
15661566+#: look for native_code, the value of that becomes the key name in the
15671567+#: shortcut. For example:
15681568+15691569+#: .. code-block:: none
15701570+15711571+#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a'
15721572+15731573+#: Here, the key name for the A key is 0x61 and you can use it with::
15741574+15751575+#: map ctrl+0x61 something
15761576+15771577+#: to map Ctrl+A to something.
15781578+15791579+#: You can use the special action no_op to unmap a keyboard shortcut
15801580+#: that is assigned in the default configuration::
15811581+15821582+#: map kitty_mod+space no_op
15831583+15841584+#: If you would like kitty to completely ignore a key event, not even
15851585+#: sending it to the program running in the terminal, map it to
15861586+#: discard_event::
15871587+15881588+#: map kitty_mod+f1 discard_event
15891589+15901590+#: You can combine multiple actions to be triggered by a single
15911591+#: shortcut with combine action, using the syntax below::
15921592+15931593+#: map key combine <separator> action1 <separator> action2 <separator> action3 ...
15941594+15951595+#: For example::
15961596+15971597+#: map kitty_mod+e combine : new_window : next_layout
15981598+15991599+#: This will create a new window and switch to the next available
16001600+#: layout.
16011601+16021602+#: You can use multi-key shortcuts with the syntax shown below::
16031603+16041604+#: map key1>key2>key3 action
16051605+16061606+#: For example::
16071607+16081608+#: map ctrl+f>2 set_font_size 20
16091609+16101610+#: The full list of actions that can be mapped to key presses is
16111611+#: available here <https://sw.kovidgoyal.net/kitty/actions/>.
16121612+16131613+# kitty_mod ctrl+shift
16141614+16151615+#: Special modifier key alias for default shortcuts. You can change
16161616+#: the value of this option to alter all default shortcuts that use
16171617+#: kitty_mod.
16181618+16191619+# clear_all_shortcuts no
16201620+16211621+#: Remove all shortcut definitions up to this point. Useful, for
16221622+#: instance, to remove the default shortcuts.
16231623+16241624+# action_alias
16251625+16261626+#: E.g. action_alias launch_tab launch --type=tab --cwd=current
16271627+16281628+#: Define action aliases to avoid repeating the same options in
16291629+#: multiple mappings. Aliases can be defined for any action and will
16301630+#: be expanded recursively. For example, the above alias allows you to
16311631+#: create mappings to launch a new tab in the current working
16321632+#: directory without duplication::
16331633+16341634+#: map f1 launch_tab vim
16351635+#: map f2 launch_tab emacs
16361636+16371637+#: Similarly, to alias kitten invocation::
16381638+16391639+#: action_alias hints kitten hints --hints-offset=0
16401640+16411641+# kitten_alias
16421642+16431643+#: E.g. kitten_alias hints hints --hints-offset=0
16441644+16451645+#: Like action_alias above, but specifically for kittens. Generally,
16461646+#: prefer to use action_alias. This option is a legacy version,
16471647+#: present for backwards compatibility. It causes all invocations of
16481648+#: the aliased kitten to be substituted. So the example above will
16491649+#: cause all invocations of the hints kitten to have the --hints-
16501650+#: offset=0 option applied.
16511651+16521652+#: Clipboard {{{
16531653+16541654+#: Copy to clipboard
16551655+16561656+# map kitty_mod+c copy_to_clipboard
16571657+# map cmd+c copy_to_clipboard
16581658+16591659+#:: There is also a copy_or_interrupt action that can be optionally
16601660+#:: mapped to Ctrl+C. It will copy only if there is a selection and
16611661+#:: send an interrupt otherwise. Similarly,
16621662+#:: copy_and_clear_or_interrupt will copy and clear the selection or
16631663+#:: send an interrupt if there is no selection.
16641664+16651665+#: Paste from clipboard
16661666+16671667+# map kitty_mod+v paste_from_clipboard
16681668+# map cmd+v paste_from_clipboard
16691669+16701670+#: Paste from selection
16711671+16721672+# map kitty_mod+s paste_from_selection
16731673+# map shift+insert paste_from_selection
16741674+16751675+#: Pass selection to program
16761676+16771677+# map kitty_mod+o pass_selection_to_program
16781678+16791679+#:: You can also pass the contents of the current selection to any
16801680+#:: program with pass_selection_to_program. By default, the system's
16811681+#:: open program is used, but you can specify your own, the selection
16821682+#:: will be passed as a command line argument to the program. For
16831683+#:: example::
16841684+16851685+#:: map kitty_mod+o pass_selection_to_program firefox
16861686+16871687+#:: You can pass the current selection to a terminal program running
16881688+#:: in a new kitty window, by using the @selection placeholder::
16891689+16901690+#:: map kitty_mod+y new_window less @selection
16911691+16921692+#: }}}
16931693+16941694+#: Scrolling {{{
16951695+16961696+#: Scroll line up
16971697+16981698+# map kitty_mod+up scroll_line_up
16991699+# map kitty_mod+k scroll_line_up
17001700+# map opt+cmd+page_up scroll_line_up
17011701+# map cmd+up scroll_line_up
17021702+17031703+#: Scroll line down
17041704+17051705+# map kitty_mod+down scroll_line_down
17061706+# map kitty_mod+j scroll_line_down
17071707+# map opt+cmd+page_down scroll_line_down
17081708+# map cmd+down scroll_line_down
17091709+17101710+#: Scroll page up
17111711+17121712+# map kitty_mod+page_up scroll_page_up
17131713+# map cmd+page_up scroll_page_up
17141714+17151715+#: Scroll page down
17161716+17171717+# map kitty_mod+page_down scroll_page_down
17181718+# map cmd+page_down scroll_page_down
17191719+17201720+#: Scroll to top
17211721+17221722+# map kitty_mod+home scroll_home
17231723+# map cmd+home scroll_home
17241724+17251725+#: Scroll to bottom
17261726+17271727+# map kitty_mod+end scroll_end
17281728+# map cmd+end scroll_end
17291729+17301730+#: Scroll to previous shell prompt
17311731+17321732+# map kitty_mod+z scroll_to_prompt -1
17331733+17341734+#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last
17351735+#:: jumped to or the last clicked position. Requires shell
17361736+#:: integration <https://sw.kovidgoyal.net/kitty/shell-integration/>
17371737+#:: to work.
17381738+17391739+#: Scroll to next shell prompt
17401740+17411741+# map kitty_mod+x scroll_to_prompt 1
17421742+17431743+#: Browse scrollback buffer in pager
17441744+17451745+# map kitty_mod+h show_scrollback
17461746+17471747+#:: You can pipe the contents of the current screen and history
17481748+#:: buffer as STDIN to an arbitrary program using launch --stdin-
17491749+#:: source. For example, the following opens the scrollback buffer in
17501750+#:: less in an overlay window::
17511751+17521752+#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
17531753+17541754+#:: For more details on piping screen and buffer contents to external
17551755+#:: programs, see launch <https://sw.kovidgoyal.net/kitty/launch/>.
17561756+17571757+#: Browse output of the last shell command in pager
17581758+17591759+# map kitty_mod+g show_last_command_output
17601760+17611761+#:: You can also define additional shortcuts to get the command
17621762+#:: output. For example, to get the first command output on screen::
17631763+17641764+#:: map f1 show_first_command_output_on_screen
17651765+17661766+#:: To get the command output that was last accessed by a keyboard
17671767+#:: action or mouse action::
17681768+17691769+#:: map f1 show_last_visited_command_output
17701770+17711771+#:: You can pipe the output of the last command run in the shell
17721772+#:: using the launch action. For example, the following opens the
17731773+#:: output in less in an overlay window::
17741774+17751775+#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R
17761776+17771777+#:: To get the output of the first command on the screen, use
17781778+#:: @first_cmd_output_on_screen. To get the output of the last jumped
17791779+#:: to command, use @last_visited_cmd_output.
17801780+17811781+#:: Requires shell integration
17821782+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
17831783+17841784+#: }}}
17851785+17861786+#: Window management {{{
17871787+17881788+#: New window
17891789+17901790+# map kitty_mod+enter new_window
17911791+# map cmd+enter new_window
17921792+17931793+#:: You can open a new kitty window running an arbitrary program, for
17941794+#:: example::
17951795+17961796+#:: map kitty_mod+y launch mutt
17971797+17981798+#:: You can open a new window with the current working directory set
17991799+#:: to the working directory of the current window using::
18001800+18011801+#:: map ctrl+alt+enter launch --cwd=current
18021802+18031803+#:: You can open a new window that is allowed to control kitty via
18041804+#:: the kitty remote control facility with launch --allow-remote-
18051805+#:: control. Any programs running in that window will be allowed to
18061806+#:: control kitty. For example::
18071807+18081808+#:: map ctrl+enter launch --allow-remote-control some_program
18091809+18101810+#:: You can open a new window next to the currently active window or
18111811+#:: as the first window, with::
18121812+18131813+#:: map ctrl+n launch --location=neighbor
18141814+#:: map ctrl+f launch --location=first
18151815+18161816+#:: For more details, see launch
18171817+#:: <https://sw.kovidgoyal.net/kitty/launch/>.
18181818+18191819+#: New OS window
18201820+18211821+# map kitty_mod+n new_os_window
18221822+# map cmd+n new_os_window
18231823+18241824+#:: Works like new_window above, except that it opens a top-level OS
18251825+#:: window. In particular you can use new_os_window_with_cwd to open
18261826+#:: a window with the current working directory.
18271827+18281828+#: Close window
18291829+18301830+# map kitty_mod+w close_window
18311831+# map shift+cmd+d close_window
18321832+18331833+#: Next window
18341834+18351835+# map kitty_mod+] next_window
18361836+18371837+#: Previous window
18381838+18391839+# map kitty_mod+[ previous_window
18401840+18411841+#: Move window forward
18421842+18431843+# map kitty_mod+f move_window_forward
18441844+18451845+#: Move window backward
18461846+18471847+# map kitty_mod+b move_window_backward
18481848+18491849+#: Move window to top
18501850+18511851+# map kitty_mod+` move_window_to_top
18521852+18531853+#: Start resizing window
18541854+18551855+# map kitty_mod+r start_resizing_window
18561856+# map cmd+r start_resizing_window
18571857+18581858+#: First window
18591859+18601860+# map kitty_mod+1 first_window
18611861+# map cmd+1 first_window
18621862+18631863+#: Second window
18641864+18651865+# map kitty_mod+2 second_window
18661866+# map cmd+2 second_window
18671867+18681868+#: Third window
18691869+18701870+# map kitty_mod+3 third_window
18711871+# map cmd+3 third_window
18721872+18731873+#: Fourth window
18741874+18751875+# map kitty_mod+4 fourth_window
18761876+# map cmd+4 fourth_window
18771877+18781878+#: Fifth window
18791879+18801880+# map kitty_mod+5 fifth_window
18811881+# map cmd+5 fifth_window
18821882+18831883+#: Sixth window
18841884+18851885+# map kitty_mod+6 sixth_window
18861886+# map cmd+6 sixth_window
18871887+18881888+#: Seventh window
18891889+18901890+# map kitty_mod+7 seventh_window
18911891+# map cmd+7 seventh_window
18921892+18931893+#: Eight window
18941894+18951895+# map kitty_mod+8 eighth_window
18961896+# map cmd+8 eighth_window
18971897+18981898+#: Ninth window
18991899+19001900+# map kitty_mod+9 ninth_window
19011901+# map cmd+9 ninth_window
19021902+19031903+#: Tenth window
19041904+19051905+# map kitty_mod+0 tenth_window
19061906+19071907+#: Visually select and focus window
19081908+19091909+# map kitty_mod+f7 focus_visible_window
19101910+19111911+#:: Display overlay numbers and alphabets on the window, and switch
19121912+#:: the focus to the window when you press the key. When there are
19131913+#:: only two windows, the focus will be switched directly without
19141914+#:: displaying the overlay. You can change the overlay characters and
19151915+#:: their order with option visual_window_select_characters.
19161916+19171917+#: Visually swap window with another
19181918+19191919+# map kitty_mod+f8 swap_with_window
19201920+19211921+#:: Works like focus_visible_window above, but swaps the window.
19221922+19231923+#: }}}
19241924+19251925+#: Tab management {{{
19261926+19271927+#: Next tab
19281928+19291929+# map kitty_mod+right next_tab
19301930+# map shift+cmd+] next_tab
19311931+# map ctrl+tab next_tab
19321932+19331933+#: Previous tab
19341934+19351935+# map kitty_mod+left previous_tab
19361936+# map shift+cmd+[ previous_tab
19371937+# map ctrl+shift+tab previous_tab
19381938+19391939+#: New tab
19401940+19411941+# map kitty_mod+t new_tab
19421942+# map cmd+t new_tab
19431943+19441944+#: Close tab
19451945+19461946+# map kitty_mod+q close_tab
19471947+# map cmd+w close_tab
19481948+19491949+#: Close OS window
19501950+19511951+# map shift+cmd+w close_os_window
19521952+19531953+#: Move tab forward
19541954+19551955+# map kitty_mod+. move_tab_forward
19561956+19571957+#: Move tab backward
19581958+19591959+# map kitty_mod+, move_tab_backward
19601960+19611961+#: Set tab title
19621962+19631963+# map kitty_mod+alt+t set_tab_title
19641964+# map shift+cmd+i set_tab_title
19651965+19661966+19671967+#: You can also create shortcuts to go to specific tabs, with 1 being
19681968+#: the first tab, 2 the second tab and -1 being the previously active
19691969+#: tab, and any number larger than the last tab being the last tab::
19701970+19711971+#: map ctrl+alt+1 goto_tab 1
19721972+#: map ctrl+alt+2 goto_tab 2
19731973+19741974+#: Just as with new_window above, you can also pass the name of
19751975+#: arbitrary commands to run when using new_tab and new_tab_with_cwd.
19761976+#: Finally, if you want the new tab to open next to the current tab
19771977+#: rather than at the end of the tabs list, use::
19781978+19791979+#: map ctrl+t new_tab !neighbor [optional cmd to run]
19801980+#: }}}
19811981+19821982+#: Layout management {{{
19831983+19841984+#: Next layout
19851985+19861986+# map kitty_mod+l next_layout
19871987+19881988+19891989+#: You can also create shortcuts to switch to specific layouts::
19901990+19911991+#: map ctrl+alt+t goto_layout tall
19921992+#: map ctrl+alt+s goto_layout stack
19931993+19941994+#: Similarly, to switch back to the previous layout::
19951995+19961996+#: map ctrl+alt+p last_used_layout
19971997+19981998+#: There is also a toggle_layout action that switches to the named
19991999+#: layout or back to the previous layout if in the named layout.
20002000+#: Useful to temporarily "zoom" the active window by switching to the
20012001+#: stack layout::
20022002+20032003+#: map ctrl+alt+z toggle_layout stack
20042004+#: }}}
20052005+20062006+#: Font sizes {{{
20072007+20082008+#: You can change the font size for all top-level kitty OS windows at
20092009+#: a time or only the current one.
20102010+20112011+#: Increase font size
20122012+20132013+# map kitty_mod+equal change_font_size all +2.0
20142014+# map kitty_mod+plus change_font_size all +2.0
20152015+# map kitty_mod+kp_add change_font_size all +2.0
20162016+# map cmd+plus change_font_size all +2.0
20172017+# map cmd+equal change_font_size all +2.0
20182018+# map shift+cmd+equal change_font_size all +2.0
20192019+20202020+#: Decrease font size
20212021+20222022+# map kitty_mod+minus change_font_size all -2.0
20232023+# map kitty_mod+kp_subtract change_font_size all -2.0
20242024+# map cmd+minus change_font_size all -2.0
20252025+# map shift+cmd+minus change_font_size all -2.0
20262026+20272027+#: Reset font size
20282028+20292029+# map kitty_mod+backspace change_font_size all 0
20302030+# map cmd+0 change_font_size all 0
20312031+20322032+20332033+#: To setup shortcuts for specific font sizes::
20342034+20352035+#: map kitty_mod+f6 change_font_size all 10.0
20362036+20372037+#: To setup shortcuts to change only the current OS window's font
20382038+#: size::
20392039+20402040+#: map kitty_mod+f6 change_font_size current 10.0
20412041+#: }}}
20422042+20432043+#: Select and act on visible text {{{
20442044+20452045+#: Use the hints kitten to select text and either pass it to an
20462046+#: external program or insert it into the terminal or copy it to the
20472047+#: clipboard.
20482048+20492049+#: Open URL
20502050+20512051+# map kitty_mod+e open_url_with_hints
20522052+20532053+#:: Open a currently visible URL using the keyboard. The program used
20542054+#:: to open the URL is specified in open_url_with.
20552055+20562056+#: Insert selected path
20572057+20582058+# map kitty_mod+p>f kitten hints --type path --program -
20592059+20602060+#:: Select a path/filename and insert it into the terminal. Useful,
20612061+#:: for instance to run git commands on a filename output from a
20622062+#:: previous git command.
20632063+20642064+#: Open selected path
20652065+20662066+# map kitty_mod+p>shift+f kitten hints --type path
20672067+20682068+#:: Select a path/filename and open it with the default open program.
20692069+20702070+#: Insert selected line
20712071+20722072+# map kitty_mod+p>l kitten hints --type line --program -
20732073+20742074+#:: Select a line of text and insert it into the terminal. Useful for
20752075+#:: the output of things like: `ls -1`.
20762076+20772077+#: Insert selected word
20782078+20792079+# map kitty_mod+p>w kitten hints --type word --program -
20802080+20812081+#:: Select words and insert into terminal.
20822082+20832083+#: Insert selected hash
20842084+20852085+# map kitty_mod+p>h kitten hints --type hash --program -
20862086+20872087+#:: Select something that looks like a hash and insert it into the
20882088+#:: terminal. Useful with git, which uses SHA1 hashes to identify
20892089+#:: commits.
20902090+20912091+#: Open the selected file at the selected line
20922092+20932093+# map kitty_mod+p>n kitten hints --type linenum
20942094+20952095+#:: Select something that looks like filename:linenum and open it in
20962096+#:: vim at the specified line number.
20972097+20982098+#: Open the selected hyperlink
20992099+21002100+# map kitty_mod+p>y kitten hints --type hyperlink
21012101+21022102+#:: Select a hyperlink (i.e. a URL that has been marked as such by
21032103+#:: the terminal program, for example, by `ls --hyperlink=auto`).
21042104+21052105+21062106+#: The hints kitten has many more modes of operation that you can map
21072107+#: to different shortcuts. For a full description see hints kitten
21082108+#: <https://sw.kovidgoyal.net/kitty/kittens/hints/>.
21092109+#: }}}
21102110+21112111+#: Miscellaneous {{{
21122112+21132113+#: Show documentation
21142114+21152115+# map kitty_mod+f1 show_kitty_doc overview
21162116+21172117+#: Toggle fullscreen
21182118+21192119+# map kitty_mod+f11 toggle_fullscreen
21202120+# map ctrl+cmd+f toggle_fullscreen
21212121+21222122+#: Toggle maximized
21232123+21242124+# map kitty_mod+f10 toggle_maximized
21252125+21262126+#: Toggle macOS secure keyboard entry
21272127+21282128+# map opt+cmd+s toggle_macos_secure_keyboard_entry
21292129+21302130+#: Unicode input
21312131+21322132+# map kitty_mod+u kitten unicode_input
21332133+# map ctrl+cmd+space kitten unicode_input
21342134+21352135+#: Edit config file
21362136+21372137+# map kitty_mod+f2 edit_config_file
21382138+# map cmd+, edit_config_file
21392139+21402140+#: Open the kitty command shell
21412141+21422142+# map kitty_mod+escape kitty_shell window
21432143+21442144+#:: Open the kitty shell in a new window / tab / overlay / os_window
21452145+#:: to control kitty using commands.
21462146+21472147+#: Increase background opacity
21482148+21492149+# map kitty_mod+a>m set_background_opacity +0.1
21502150+21512151+#: Decrease background opacity
21522152+21532153+# map kitty_mod+a>l set_background_opacity -0.1
21542154+21552155+#: Make background fully opaque
21562156+21572157+# map kitty_mod+a>1 set_background_opacity 1
21582158+21592159+#: Reset background opacity
21602160+21612161+# map kitty_mod+a>d set_background_opacity default
21622162+21632163+#: Reset the terminal
21642164+21652165+# map kitty_mod+delete clear_terminal reset active
21662166+# map opt+cmd+r clear_terminal reset active
21672167+21682168+#:: You can create shortcuts to clear/reset the terminal. For
21692169+#:: example::
21702170+21712171+#:: # Reset the terminal
21722172+#:: map f1 clear_terminal reset active
21732173+#:: # Clear the terminal screen by erasing all contents
21742174+#:: map f1 clear_terminal clear active
21752175+#:: # Clear the terminal scrollback by erasing it
21762176+#:: map f1 clear_terminal scrollback active
21772177+#:: # Scroll the contents of the screen into the scrollback
21782178+#:: map f1 clear_terminal scroll active
21792179+#:: # Clear everything up to the line with the cursor
21802180+#:: map f1 clear_terminal to_cursor active
21812181+21822182+#:: If you want to operate on all kitty windows instead of just the
21832183+#:: current one, use all instead of active.
21842184+21852185+#:: It is also possible to remap Ctrl+L to both scroll the current
21862186+#:: screen contents into the scrollback buffer and clear the screen,
21872187+#:: instead of just clearing the screen, for example, for ZSH add the
21882188+#:: following to ~/.zshrc:
21892189+21902190+#:: .. code-block:: zsh
21912191+21922192+#:: scroll-and-clear-screen() {
21932193+#:: printf '\n%.0s' {1..$LINES}
21942194+#:: zle clear-screen
21952195+#:: }
21962196+#:: zle -N scroll-and-clear-screen
21972197+#:: bindkey '^l' scroll-and-clear-screen
21982198+21992199+#: Clear up to cursor line
22002200+22012201+# map cmd+k clear_terminal to_cursor active
22022202+22032203+#: Reload kitty.conf
22042204+22052205+# map kitty_mod+f5 load_config_file
22062206+# map ctrl+cmd+, load_config_file
22072207+22082208+#:: Reload kitty.conf, applying any changes since the last time it
22092209+#:: was loaded. Note that a handful of options cannot be dynamically
22102210+#:: changed and require a full restart of kitty. Particularly, when
22112211+#:: changing shortcuts for actions located on the macOS global menu
22122212+#:: bar, a full restart is needed. You can also map a keybinding to
22132213+#:: load a different config file, for example::
22142214+22152215+#:: map f5 load_config /path/to/alternative/kitty.conf
22162216+22172217+#:: Note that all options from the original kitty.conf are discarded,
22182218+#:: in other words the new configuration *replace* the old ones.
22192219+22202220+#: Debug kitty configuration
22212221+22222222+# map kitty_mod+f6 debug_config
22232223+# map opt+cmd+, debug_config
22242224+22252225+#:: Show details about exactly what configuration kitty is running
22262226+#:: with and its host environment. Useful for debugging issues.
22272227+22282228+#: Send arbitrary text on key presses
22292229+22302230+#:: E.g. map ctrl+shift+alt+h send_text all Hello World
22312231+22322232+#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the
22332233+#:: client program when pressing specified shortcut keys. For
22342234+#:: example::
22352235+22362236+#:: map ctrl+alt+a send_text all Special text
22372237+22382238+#:: This will send "Special text" when you press the Ctrl+Alt+A key
22392239+#:: combination. The text to be sent is a python string literal so
22402240+#:: you can use escapes like \x1b to send control codes or \u21fb to
22412241+#:: send Unicode characters (or you can just input the Unicode
22422242+#:: characters directly as UTF-8 text). You can use `kitty +kitten
22432243+#:: show_key` to get the key escape codes you want to emulate.
22442244+22452245+#:: The first argument to send_text is the keyboard modes in which to
22462246+#:: activate the shortcut. The possible values are normal,
22472247+#:: application, kitty or a comma separated combination of them. The
22482248+#:: modes normal and application refer to the DECCKM cursor key mode
22492249+#:: for terminals, and kitty refers to the kitty extended keyboard
22502250+#:: protocol. The special value all means all of them.
22512251+22522252+#:: Some more examples::
22532253+22542254+#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home)
22552255+#:: map ctrl+alt+a send_text normal Word\x1b[H
22562256+#:: map ctrl+alt+a send_text application Word\x1bOH
22572257+#:: # Run a command at a shell prompt (like typing the command and pressing Enter)
22582258+#:: map ctrl+alt+a send_text normal,application some command with arguments\r
22592259+22602260+#: Open kitty Website
22612261+22622262+# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/
22632263+22642264+#: }}}
22652265+22662266+#: }}}