···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 MesloLGS NF
1010+bold_font MesloLGS NF Bold
1111+bold_italic_font MesloLGS NF Bold Italic
1212+font_family MesloLGS NF Regular
1313+italic_font MesloLGS NF Italic
1414+1515+# font_family monospace
1616+# bold_font auto
1717+# italic_font auto
1818+# bold_italic_font auto
1919+2020+#: You can specify different fonts for the bold/italic/bold-italic
2121+#: variants. To get a full list of supported fonts use the `kitty
2222+#: list-fonts` command. By default they are derived automatically, by
2323+#: the OSes font system. Setting them manually is useful for font
2424+#: families that have many weight variants like Book, Medium, Thick,
2525+#: etc. For example::
2626+2727+#: font_family Operator Mono Book
2828+#: bold_font Operator Mono Medium
2929+#: italic_font Operator Mono Book Italic
3030+#: bold_italic_font Operator Mono Medium Italic
3131+3232+# font_size 11.0
3333+3434+#: Font size (in pts)
3535+3636+# force_ltr no
3737+3838+#: kitty does not support BIDI (bidirectional text), however, for RTL
3939+#: scripts, words are automatically displayed in RTL. That is to say,
4040+#: in an RTL script, the words "HELLO WORLD" display in kitty as
4141+#: "WORLD HELLO", and if you try to select a substring of an RTL-
4242+#: shaped string, you will get the character that would be there had
4343+#: the the string been LTR. For example, assuming the Hebrew word
4444+#: ירושלים, selecting the character that on the screen appears to be ם
4545+#: actually writes into the selection buffer the character י. kitty's
4646+#: default behavior is useful in conjunction with a filter to reverse
4747+#: the word order, however, if you wish to manipulate RTL glyphs, it
4848+#: can be very challenging to work with, so this option is provided to
4949+#: turn it off. Furthermore, this option can be used with the command
5050+#: line program GNU FriBidi
5151+#: <https://github.com/fribidi/fribidi#executable> to get BIDI
5252+#: support, because it will force kitty to always treat the text as
5353+#: LTR, which FriBidi expects for terminals.
5454+5555+# adjust_line_height 0
5656+# adjust_column_width 0
5757+5858+#: Change the size of each character cell kitty renders. You can use
5959+#: either numbers, which are interpreted as pixels or percentages
6060+#: (number followed by %), which are interpreted as percentages of the
6161+#: unmodified values. You can use negative pixels or percentages less
6262+#: than 100% to reduce sizes (but this might cause rendering
6363+#: artifacts).
6464+6565+# adjust_baseline 0
6666+6767+#: Adjust the vertical alignment of text (the height in the cell at
6868+#: which text is positioned). You can use either numbers, which are
6969+#: interpreted as pixels or a percentages (number followed by %),
7070+#: which are interpreted as the percentage of the line height. A
7171+#: positive value moves the baseline up, and a negative value moves
7272+#: them down. The underline and strikethrough positions are adjusted
7373+#: accordingly.
7474+7575+symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
7676+7777+#: Map the specified unicode codepoints to a particular font. Useful
7878+#: if you need special rendering for some symbols, such as for
7979+#: Powerline. Avoids the need for patched fonts. Each unicode code
8080+#: point is specified in the form U+<code point in hexadecimal>. You
8181+#: can specify multiple code points, separated by commas and ranges
8282+#: separated by hyphens. symbol_map itself can be specified multiple
8383+#: times. Syntax is::
8484+8585+: symbol_map codepoints Font Meslo Nerd Font
8686+8787+# disable_ligatures never
8888+8989+#: Choose how you want to handle multi-character ligatures. The
9090+#: default is to always render them. You can tell kitty to not render
9191+#: them when the cursor is over them by using cursor to make editing
9292+#: easier, or have kitty never render them at all by using always, if
9393+#: you don't like them. The ligature strategy can be set per-window
9494+#: either using the kitty remote control facility or by defining
9595+#: shortcuts for it in kitty.conf, for example::
9696+9797+#: map alt+1 disable_ligatures_in active always
9898+#: map alt+2 disable_ligatures_in all never
9999+#: map alt+3 disable_ligatures_in tab cursor
100100+101101+#: Note that this refers to programming ligatures, typically
102102+#: implemented using the calt OpenType feature. For disabling general
103103+#: ligatures, use the font_features setting.
104104+105105+# font_features none
106106+107107+#: Choose exactly which OpenType features to enable or disable. This
108108+#: is useful as some fonts might have features worthwhile in a
109109+#: terminal. For example, Fira Code Retina includes a discretionary
110110+#: feature, zero, which in that font changes the appearance of the
111111+#: zero (0), to make it more easily distinguishable from Ø. Fira Code
112112+#: Retina also includes other discretionary features known as
113113+#: Stylistic Sets which have the tags ss01 through ss20.
114114+115115+#: For the exact syntax to use for individual features, see the
116116+#: Harfbuzz documentation <https://harfbuzz.github.io/harfbuzz-hb-
117117+#: common.html#hb-feature-from-string>.
118118+119119+#: Note that this code is indexed by PostScript name, and not the font
120120+#: family. This allows you to define very precise feature settings;
121121+#: e.g. you can disable a feature in the italic font but not in the
122122+#: regular font.
123123+124124+#: On Linux, these are read from the FontConfig database first and
125125+#: then this, setting is applied, so they can be configured in a
126126+#: single, central place.
127127+128128+#: To get the PostScript name for a font, use kitty + list-fonts
129129+#: --psnames:
130130+131131+#: .. code-block:: sh
132132+133133+#: $ kitty + list-fonts --psnames | grep Fira
134134+#: Fira Code
135135+#: Fira Code Bold (FiraCode-Bold)
136136+#: Fira Code Light (FiraCode-Light)
137137+#: Fira Code Medium (FiraCode-Medium)
138138+#: Fira Code Regular (FiraCode-Regular)
139139+#: Fira Code Retina (FiraCode-Retina)
140140+141141+#: The part in brackets is the PostScript name.
142142+143143+#: Enable alternate zero and oldstyle numerals::
144144+145145+#: font_features FiraCode-Retina +zero +onum
146146+147147+#: Enable only alternate zero::
148148+149149+#: font_features FiraCode-Retina +zero
150150+151151+#: Disable the normal ligatures, but keep the calt feature which (in
152152+#: this font) breaks up monotony::
153153+154154+#: font_features TT2020StyleB-Regular -liga +calt
155155+156156+#: In conjunction with force_ltr, you may want to disable Arabic
157157+#: shaping entirely, and only look at their isolated forms if they
158158+#: show up in a document. You can do this with e.g.::
159159+160160+#: font_features UnifontMedium +isol -medi -fina -init
161161+162162+# box_drawing_scale 0.001, 1, 1.5, 2
163163+164164+#: Change the sizes of the lines used for the box drawing unicode
165165+#: characters These values are in pts. They will be scaled by the
166166+#: monitor DPI to arrive at a pixel value. There must be four values
167167+#: corresponding to thin, normal, thick, and very thick lines.
168168+169169+#: }}}
170170+171171+#: Cursor customization {{{
172172+173173+# cursor #cccccc
174174+175175+#: Default cursor color
176176+177177+# cursor_text_color #111111
178178+179179+#: Choose the color of text under the cursor. If you want it rendered
180180+#: with the background color of the cell underneath instead, use the
181181+#: special keyword: background
182182+183183+# cursor_shape block
184184+185185+#: The cursor shape can be one of (block, beam, underline). Note that
186186+#: when reloading the config this will be changed only if the cursor
187187+#: shape has not been set by the program running in the terminal.
188188+189189+# cursor_beam_thickness 1.5
190190+191191+#: Defines the thickness of the beam cursor (in pts)
192192+193193+# cursor_underline_thickness 2.0
194194+195195+#: Defines the thickness of the underline cursor (in pts)
196196+197197+# cursor_blink_interval -1
198198+199199+#: The interval (in seconds) at which to blink the cursor. Set to zero
200200+#: to disable blinking. Negative values mean use system default. Note
201201+#: that numbers smaller than repaint_delay will be limited to
202202+#: repaint_delay.
203203+204204+# cursor_stop_blinking_after 15.0
205205+206206+#: Stop blinking cursor after the specified number of seconds of
207207+#: keyboard inactivity. Set to zero to never stop blinking.
208208+209209+#: }}}
210210+211211+#: Scrollback {{{
212212+213213+# scrollback_lines 2000
214214+215215+#: Number of lines of history to keep in memory for scrolling back.
216216+#: Memory is allocated on demand. Negative numbers are (effectively)
217217+#: infinite scrollback. Note that using very large scrollback is not
218218+#: recommended as it can slow down performance of the terminal and
219219+#: also use large amounts of RAM. Instead, consider using
220220+#: scrollback_pager_history_size. Note that on config reload if this
221221+#: is changed it will only affect newly created windows, not existing
222222+#: ones.
223223+224224+# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
225225+226226+#: Program with which to view scrollback in a new window. The
227227+#: scrollback buffer is passed as STDIN to this program. If you change
228228+#: it, make sure the program you use can handle ANSI escape sequences
229229+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
230230+#: line above will be replaced by an integer representing which line
231231+#: should be at the top of the screen. Similarly CURSOR_LINE and
232232+#: CURSOR_COLUMN will be replaced by the current cursor position.
233233+234234+# scrollback_pager_history_size 0
235235+236236+#: Separate scrollback history size, used only for browsing the
237237+#: scrollback buffer (in MB). This separate buffer is not available
238238+#: for interactive scrolling but will be piped to the pager program
239239+#: when viewing scrollback buffer in a separate window. The current
240240+#: implementation stores the data in UTF-8, so approximatively 10000
241241+#: lines per megabyte at 100 chars per line, for pure ASCII text,
242242+#: unformatted text. A value of zero or less disables this feature.
243243+#: The maximum allowed size is 4GB. Note that on config reload if this
244244+#: is changed it will only affect newly created windows, not existing
245245+#: ones.
246246+247247+# scrollback_fill_enlarged_window no
248248+249249+#: Fill new space with lines from the scrollback buffer after
250250+#: enlarging a window.
251251+252252+# wheel_scroll_multiplier 5.0
253253+254254+#: Modify the amount scrolled by the mouse wheel. Note this is only
255255+#: used for low precision scrolling devices, not for high precision
256256+#: scrolling on platforms such as macOS and Wayland. Use negative
257257+#: numbers to change scroll direction.
258258+259259+# touch_scroll_multiplier 1.0
260260+261261+#: Modify the amount scrolled by a touchpad. Note this is only used
262262+#: for high precision scrolling devices on platforms such as macOS and
263263+#: Wayland. Use negative numbers to change scroll direction.
264264+265265+#: }}}
266266+267267+#: Mouse {{{
268268+269269+# mouse_hide_wait 3.0
270270+271271+#: Hide mouse cursor after the specified number of seconds of the
272272+#: mouse not being used. Set to zero to disable mouse cursor hiding.
273273+#: Set to a negative value to hide the mouse cursor immediately when
274274+#: typing text. Disabled by default on macOS as getting it to work
275275+#: robustly with the ever-changing sea of bugs that is Cocoa is too
276276+#: much effort.
277277+278278+# url_color #0087bd
279279+# url_style curly
280280+281281+#: The color and style for highlighting URLs on mouse-over. url_style
282282+#: can be one of: none, single, double, curly
283283+284284+# open_url_with default
285285+286286+#: The program with which to open URLs that are clicked on. The
287287+#: special value default means to use the operating system's default
288288+#: URL handler.
289289+290290+# url_prefixes http https file ftp gemini irc gopher mailto news git
291291+292292+#: The set of URL prefixes to look for when detecting a URL under the
293293+#: mouse cursor.
294294+295295+# detect_urls yes
296296+297297+#: Detect URLs under the mouse. Detected URLs are highlighted with an
298298+#: underline and the mouse cursor becomes a hand over them. Even if
299299+#: this option is disabled, URLs are still clickable.
300300+301301+# url_excluded_characters
302302+303303+#: Additional characters to be disallowed from URLs, when detecting
304304+#: URLs under the mouse cursor. By default, all characters legal in
305305+#: URLs are allowed.
306306+307307+# copy_on_select no
308308+309309+#: Copy to clipboard or a private buffer on select. With this set to
310310+#: clipboard, simply selecting text with the mouse will cause the text
311311+#: to be copied to clipboard. Useful on platforms such as macOS that
312312+#: do not have the concept of primary selections. You can instead
313313+#: specify a name such as a1 to copy to a private kitty buffer
314314+#: instead. Map a shortcut with the paste_from_buffer action to paste
315315+#: from this private buffer. For example::
316316+317317+#: map cmd+shift+v paste_from_buffer a1
318318+319319+#: Note that copying to the clipboard is a security risk, as all
320320+#: programs, including websites open in your browser can read the
321321+#: contents of the system clipboard.
322322+323323+# strip_trailing_spaces never
324324+325325+#: Remove spaces at the end of lines when copying to clipboard. A
326326+#: value of smart will do it when using normal selections, but not
327327+#: rectangle selections. always will always do it.
328328+329329+# select_by_word_characters @-./_~?&=%+#
330330+331331+#: Characters considered part of a word when double clicking. In
332332+#: addition to these characters any character that is marked as an
333333+#: alphanumeric character in the unicode database will be matched.
334334+335335+# click_interval -1.0
336336+337337+#: The interval between successive clicks to detect double/triple
338338+#: clicks (in seconds). Negative numbers will use the system default
339339+#: instead, if available, or fallback to 0.5.
340340+341341+# focus_follows_mouse no
342342+343343+#: Set the active window to the window under the mouse when moving the
344344+#: mouse around
345345+346346+# pointer_shape_when_grabbed arrow
347347+348348+#: The shape of the mouse pointer when the program running in the
349349+#: terminal grabs the mouse. Valid values are: arrow, beam and hand
350350+351351+# default_pointer_shape beam
352352+353353+#: The default shape of the mouse pointer. Valid values are: arrow,
354354+#: beam and hand
355355+356356+# pointer_shape_when_dragging beam
357357+358358+#: The default shape of the mouse pointer when dragging across text.
359359+#: Valid values are: arrow, beam and hand
360360+361361+#: Mouse actions {{{
362362+363363+#: Mouse buttons can be remapped to perform arbitrary actions. The
364364+#: syntax for doing so is:
365365+366366+#: .. code-block:: none
367367+368368+#: mouse_map button-name event-type modes action
369369+370370+#: Where ``button-name`` is one of ``left``, ``middle``, ``right`` or
371371+#: ``b1 ... b8`` with added keyboard modifiers, for example:
372372+#: ``ctrl+shift+left`` refers to holding the ctrl+shift keys while
373373+#: clicking with the left mouse button. The number ``b1 ... b8`` can
374374+#: be used to refer to upto eight buttons on a mouse.
375375+376376+#: ``event-type`` is one ``press``, ``release``, ``doublepress``,
377377+#: ``triplepress``, ``click`` and ``doubleclick``. ``modes``
378378+#: indicates whether the action is performed when the mouse is grabbed
379379+#: by the program running in the terminal, or not. It can have one or
380380+#: more or the values, ``grabbed,ungrabbed``. ``grabbed`` refers to
381381+#: when the program running in the terminal has requested mouse
382382+#: events. Note that the click and double click events have a delay of
383383+#: click_interval to disambiguate from double and triple presses.
384384+385385+#: You can run kitty with the kitty --debug-input command line option
386386+#: to see mouse events. See the builtin actions below to get a sense
387387+#: of what is possible.
388388+389389+#: If you want to unmap an action map it to ``no-op``. For example, to
390390+#: disable opening of URLs with a plain click::
391391+392392+#: mouse_map left click ungrabbed no-op
393393+394394+#: .. note::
395395+#: Once a selection is started, releasing the button that started it will
396396+#: automatically end it and no release event will be dispatched.
397397+398398+# clear_all_mouse_actions no
399399+400400+#: You can have kitty remove all mouse actions seen up to this point.
401401+#: Useful, for instance, to remove the default mouse actions.
402402+403403+# mouse_map left click ungrabbed mouse_click_url_or_select
404404+# mouse_map shift+left click grabbed,ungrabbed mouse_click_url_or_select
405405+# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_click_url
406406+407407+#: Variant with ctrl+shift is present because the simple click based
408408+#: version has an unavoidable delay of click_interval, to disambiguate
409409+#: clicks from double clicks.
410410+411411+# mouse_map ctrl+shift+left press grabbed discard_event
412412+413413+#: Prevent this press event from being sent to the program that has
414414+#: grabbed the mouse, as the corresponding release event is used to
415415+#: open a URL.
416416+417417+# mouse_map middle release ungrabbed paste_from_selection
418418+# mouse_map left press ungrabbed mouse_selection normal
419419+# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
420420+# mouse_map left doublepress ungrabbed mouse_selection word
421421+# mouse_map left triplepress ungrabbed mouse_selection line
422422+423423+#: Select the entire line
424424+425425+# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point
426426+427427+#: Select from the clicked point to the end of the line
428428+429429+# mouse_map right press ungrabbed mouse_selection extend
430430+431431+#: If you want only the end of the selection to be moved instead of
432432+#: the nearest boundary, use move-end instead of extend.
433433+434434+# mouse_map shift+middle release ungrabbed,grabbed paste_selection
435435+# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal
436436+# mouse_map shift+ctrl+alt+left press ungrabbed,grabbed mouse_selection rectangle
437437+# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word
438438+# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line
439439+440440+#: Select the entire line
441441+442442+# mouse_map shift+ctrl+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point
443443+444444+#: Select from the clicked point to the end of the line
445445+446446+# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend
447447+#: }}}
448448+449449+#: }}}
450450+451451+#: Performance tuning {{{
452452+453453+# repaint_delay 10
454454+455455+#: Delay (in milliseconds) between screen updates. Decreasing it,
456456+#: increases frames-per-second (FPS) at the cost of more CPU usage.
457457+#: The default value yields ~100 FPS which is more than sufficient for
458458+#: most uses. Note that to actually achieve 100 FPS you have to either
459459+#: set sync_to_monitor to no or use a monitor with a high refresh
460460+#: rate. Also, to minimize latency when there is pending input to be
461461+#: processed, repaint_delay is ignored.
462462+463463+# input_delay 3
464464+465465+#: Delay (in milliseconds) before input from the program running in
466466+#: the terminal is processed. Note that decreasing it will increase
467467+#: responsiveness, but also increase CPU usage and might cause flicker
468468+#: in full screen programs that redraw the entire screen on each loop,
469469+#: because kitty is so fast that partial screen updates will be drawn.
470470+471471+# sync_to_monitor yes
472472+473473+#: Sync screen updates to the refresh rate of the monitor. This
474474+#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
475475+#: when scrolling. However, it limits the rendering speed to the
476476+#: refresh rate of your monitor. With a very high speed mouse/high
477477+#: keyboard repeat rate, you may notice some slight input latency. If
478478+#: so, set this to no.
479479+480480+#: }}}
481481+482482+#: Terminal bell {{{
483483+484484+enable_audio_bell no
485485+486486+#: Enable/disable the audio bell. Useful in environments that require
487487+#: silence.
488488+489489+# visual_bell_duration 0.0
490490+491491+#: Visual bell duration. Flash the screen when a bell occurs for the
492492+#: specified number of seconds. Set to zero to disable.
493493+494494+# window_alert_on_bell yes
495495+496496+#: Request window attention on bell. Makes the dock icon bounce on
497497+#: macOS or the taskbar flash on linux.
498498+499499+# bell_on_tab yes
500500+501501+#: Show a bell symbol on the tab if a bell occurs in one of the
502502+#: windows in the tab and the window is not the currently focused
503503+#: window
504504+505505+# command_on_bell none
506506+507507+#: Program to run when a bell occurs. The environment variable
508508+#: KITTY_CHILD_CMDLINE can be used to get the program running in the
509509+#: window in which the bell occurred.
510510+511511+#: }}}
512512+513513+#: Window layout {{{
514514+515515+# remember_window_size yes
516516+# initial_window_width 640
517517+# initial_window_height 400
518518+519519+#: If enabled, the window size will be remembered so that new
520520+#: instances of kitty will have the same size as the previous
521521+#: instance. If disabled, the window will initially have size
522522+#: configured by initial_window_width/height, in pixels. You can use a
523523+#: suffix of "c" on the width/height values to have them interpreted
524524+#: as number of cells instead of pixels.
525525+526526+# enabled_layouts *
527527+528528+#: The enabled window layouts. A comma separated list of layout names.
529529+#: The special value all means all layouts. The first listed layout
530530+#: will be used as the startup layout. Default configuration is all
531531+#: layouts in alphabetical order. For a list of available layouts, see
532532+#: the https://sw.kovidgoyal.net/kitty/overview/#layouts.
533533+534534+# window_resize_step_cells 2
535535+# window_resize_step_lines 2
536536+537537+#: The step size (in units of cell width/cell height) to use when
538538+#: resizing windows. The cells value is used for horizontal resizing
539539+#: and the lines value for vertical resizing.
540540+541541+# window_border_width 0.5pt
542542+543543+#: The width of window borders. Can be either in pixels (px) or pts
544544+#: (pt). Values in pts will be rounded to the nearest number of pixels
545545+#: based on screen resolution. If not specified the unit is assumed to
546546+#: be pts. Note that borders are displayed only when more than one
547547+#: window is visible. They are meant to separate multiple windows.
548548+549549+# draw_minimal_borders yes
550550+551551+#: Draw only the minimum borders needed. This means that only the
552552+#: minimum needed borders for inactive windows are drawn. That is only
553553+#: the borders that separate the inactive window from a neighbor. Note
554554+#: that setting a non-zero window margin overrides this and causes all
555555+#: borders to be drawn.
556556+557557+# window_margin_width 0
558558+559559+#: The window margin (in pts) (blank area outside the border). A
560560+#: single value sets all four sides. Two values set the vertical and
561561+#: horizontal sides. Three values set top, horizontal and bottom. Four
562562+#: values set top, right, bottom and left.
563563+564564+# single_window_margin_width -1
565565+566566+#: The window margin (in pts) to use when only a single window is
567567+#: visible. Negative values will cause the value of
568568+#: window_margin_width to be used instead. A single value sets all
569569+#: four sides. Two values set the vertical and horizontal sides. Three
570570+#: values set top, horizontal and bottom. Four values set top, right,
571571+#: bottom and left.
572572+573573+# window_padding_width 0
574574+575575+#: The window padding (in pts) (blank area between the text and the
576576+#: window border). A single value sets all four sides. Two values set
577577+#: the vertical and horizontal sides. Three values set top, horizontal
578578+#: and bottom. Four values set top, right, bottom and left.
579579+580580+# placement_strategy center
581581+582582+#: When the window size is not an exact multiple of the cell size, the
583583+#: cell area of the terminal window will have some extra padding on
584584+#: the sides. You can control how that padding is distributed with
585585+#: this option. Using a value of center means the cell area will be
586586+#: placed centrally. A value of top-left means the padding will be on
587587+#: only the bottom and right edges.
588588+589589+# active_border_color #00ff00
590590+591591+#: The color for the border of the active window. Set this to none to
592592+#: not draw borders around the active window.
593593+594594+# inactive_border_color #cccccc
595595+596596+#: The color for the border of inactive windows
597597+598598+# bell_border_color #ff5a00
599599+600600+#: The color for the border of inactive windows in which a bell has
601601+#: occurred
602602+603603+# inactive_text_alpha 1.0
604604+605605+#: Fade the text in inactive windows by the specified amount (a number
606606+#: between zero and one, with zero being fully faded).
607607+608608+# hide_window_decorations no
609609+610610+#: Hide the window decorations (title-bar and window borders) with
611611+#: yes. On macOS, titlebar-only can be used to only hide the titlebar.
612612+#: Whether this works and exactly what effect it has depends on the
613613+#: window manager/operating system. Note that the effects of changing
614614+#: this setting when reloading config are undefined.
615615+616616+# resize_debounce_time 0.1
617617+618618+#: The time (in seconds) to wait before redrawing the screen when a
619619+#: resize event is received. On platforms such as macOS, where the
620620+#: operating system sends events corresponding to the start and end of
621621+#: a resize, this number is ignored.
622622+623623+# resize_draw_strategy static
624624+625625+#: Choose how kitty draws a window while a resize is in progress. A
626626+#: value of static means draw the current window contents, mostly
627627+#: unchanged. A value of scale means draw the current window contents
628628+#: scaled. A value of blank means draw a blank window. A value of size
629629+#: means show the window size in cells.
630630+631631+# resize_in_steps no
632632+633633+#: Resize the OS window in steps as large as the cells, instead of
634634+#: with the usual pixel accuracy. Combined with an
635635+#: initial_window_width and initial_window_height in number of cells,
636636+#: this option can be used to keep the margins as small as possible
637637+#: when resizing the OS window. Note that this does not currently work
638638+#: on Wayland.
639639+640640+# confirm_os_window_close 0
641641+642642+#: Ask for confirmation when closing an OS window or a tab that has at
643643+#: least this number of kitty windows in it. A value of zero disables
644644+#: confirmation. This confirmation also applies to requests to quit
645645+#: the entire application (all OS windows, via the quit action).
646646+647647+#: }}}
648648+649649+#: Tab bar {{{
650650+651651+# tab_bar_edge bottom
652652+653653+#: Which edge to show the tab bar on, top or bottom
654654+655655+# tab_bar_margin_width 0.0
656656+657657+#: The margin to the left and right of the tab bar (in pts)
658658+659659+# tab_bar_margin_height 0.0 0.0
660660+661661+#: The margin above and below the tab bar (in pts). The first number
662662+#: is the margin between the edge of the OS Window and the tab bar and
663663+#: the second number is the margin between the tab bar and the
664664+#: contents of the current tab.
665665+666666+# tab_bar_style fade
667667+668668+#: The tab bar style, can be one of:
669669+670670+#: fade
671671+#: Each tab's edges fade into the background color (see tab_fade)
672672+#: slant
673673+#: Tabs look like the tabs in a physical file
674674+#: separator
675675+#: Tabs are separated by a configurable separator (see tab_separator)
676676+#: powerline
677677+#: Tabs are shown as a continuous line with "fancy" separators (see tab_powerline_style)
678678+#: hidden
679679+#: The tab bar is hidden. If you use this, you might want to create a mapping
680680+#: for the https://sw.kovidgoyal.net/kitty/actions/#select-tab action which presents you with a list
681681+#: of tabs and allows for easy switching to a tab.
682682+683683+# tab_bar_min_tabs 2
684684+685685+#: The minimum number of tabs that must exist before the tab bar is
686686+#: shown
687687+688688+# tab_switch_strategy previous
689689+690690+#: The algorithm to use when switching to a tab when the current tab
691691+#: is closed. The default of previous will switch to the last used
692692+#: tab. A value of left will switch to the tab to the left of the
693693+#: closed tab. A value of right will switch to the tab to the right of
694694+#: the closed tab. A value of last will switch to the right-most tab.
695695+696696+# tab_fade 0.25 0.5 0.75 1
697697+698698+#: Control how each tab fades into the background when using fade for
699699+#: the tab_bar_style. Each number is an alpha (between zero and one)
700700+#: that controls how much the corresponding cell fades into the
701701+#: background, with zero being no fade and one being full fade. You
702702+#: can change the number of cells used by adding/removing entries to
703703+#: this list.
704704+705705+# tab_separator " ┇"
706706+707707+#: The separator between tabs in the tab bar when using separator as
708708+#: the tab_bar_style.
709709+710710+# tab_powerline_style angled
711711+712712+#: The powerline separator style between tabs in the tab bar when
713713+#: using powerline as the tab_bar_style, can be one of: angled,
714714+#: slanted, or round.
715715+716716+# tab_activity_symbol none
717717+718718+#: Some text or a unicode symbol to show on the tab if a window in the
719719+#: tab that does not have focus has some activity. If you want to use
720720+#: leading or trailing spaces surround the text with quotes.
721721+722722+# tab_title_template "{title}"
723723+724724+#: A template to render the tab title. The default just renders the
725725+#: title. If you wish to include the tab-index as well, use something
726726+#: like: {index}: {title}. Useful if you have shortcuts mapped for
727727+#: goto_tab N. If you prefer to see the index as a superscript, use
728728+#: {sup.index}. In addition you can use {layout_name} for the current
729729+#: layout name, {num_windows} for the number of windows in the tab and
730730+#: {num_window_groups} for the number of window groups (not counting
731731+#: overlay windows) in the tab. Note that formatting is done by
732732+#: Python's string formatting machinery, so you can use, for instance,
733733+#: {layout_name[:2].upper()} to show only the first two letters of the
734734+#: layout name, upper-cased. If you want to style the text, you can
735735+#: use styling directives, for example:
736736+#: {fmt.fg.red}red{fmt.fg.default}normal{fmt.bg._00FF00}green
737737+#: bg{fmt.bg.normal}. Similarly, for bold and italic:
738738+#: {fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}.
739739+740740+# active_tab_title_template none
741741+742742+#: Template to use for active tabs, if not specified falls back to
743743+#: tab_title_template.
744744+745745+# active_tab_foreground #000
746746+# active_tab_background #eee
747747+# active_tab_font_style bold-italic
748748+# inactive_tab_foreground #444
749749+# inactive_tab_background #999
750750+# inactive_tab_font_style normal
751751+752752+#: Tab bar colors and styles
753753+754754+# tab_bar_background none
755755+756756+#: Background color for the tab bar. Defaults to using the terminal
757757+#: background color.
758758+759759+#: }}}
760760+761761+#: Color scheme {{{
762762+763763+# foreground #dddddd
764764+# background #000000
765765+766766+#: The foreground and background colors
767767+768768+# background_opacity 1.0
769769+770770+#: The opacity of the background. A number between 0 and 1, where 1 is
771771+#: opaque and 0 is fully transparent. This will only work if
772772+#: supported by the OS (for instance, when using a compositor under
773773+#: X11). Note that it only sets the background color's opacity in
774774+#: cells that have the same background color as the default terminal
775775+#: background. This is so that things like the status bar in vim,
776776+#: powerline prompts, etc. still look good. But it means that if you
777777+#: use a color theme with a background color in your editor, it will
778778+#: not be rendered as transparent. Instead you should change the
779779+#: default background color in your kitty config and not use a
780780+#: background color in the editor color scheme. Or use the escape
781781+#: codes to set the terminals default colors in a shell script to
782782+#: launch your editor. Be aware that using a value less than 1.0 is a
783783+#: (possibly significant) performance hit. If you want to dynamically
784784+#: change transparency of windows set dynamic_background_opacity to
785785+#: yes (this is off by default as it has a performance cost). Changing
786786+#: this setting when reloading the config will only work if
787787+#: dynamic_background_opacity was enabled in the original config.
788788+789789+# background_image none
790790+791791+#: Path to a background image. Must be in PNG format.
792792+793793+# background_image_layout tiled
794794+795795+#: Whether to tile or scale the background image.
796796+797797+# background_image_linear no
798798+799799+#: When background image is scaled, whether linear interpolation
800800+#: should be used.
801801+802802+# dynamic_background_opacity no
803803+804804+#: Allow changing of the background_opacity dynamically, using either
805805+#: keyboard shortcuts (increase_background_opacity and
806806+#: decrease_background_opacity) or the remote control facility.
807807+#: Changing this setting by reloading the config is not supported.
808808+809809+# background_tint 0.0
810810+811811+#: How much to tint the background image by the background color. The
812812+#: tint is applied only under the text area, not margin/borders. Makes
813813+#: it easier to read the text. Tinting is done using the current
814814+#: background color for each window. This setting applies only if
815815+#: background_opacity is set and transparent windows are supported or
816816+#: background_image is set.
817817+818818+# dim_opacity 0.75
819819+820820+#: How much to dim text that has the DIM/FAINT attribute set. One
821821+#: means no dimming and zero means fully dimmed (i.e. invisible).
822822+823823+# selection_foreground #000000
824824+825825+#: The foreground for text selected with the mouse. A value of none
826826+#: means to leave the color unchanged.
827827+828828+# selection_background #fffacd
829829+830830+#: The background for text selected with the mouse.
831831+832832+#: The color table {{{
833833+834834+#: The 256 terminal colors. There are 8 basic colors, each color has a
835835+#: dull and bright version, for the first 16 colors. You can set the
836836+#: remaining 240 colors as color16 to color255.
837837+838838+# color0 #000000
839839+# color8 #767676
840840+841841+#: black
842842+843843+# color1 #cc0403
844844+# color9 #f2201f
845845+846846+#: red
847847+848848+# color2 #19cb00
849849+# color10 #23fd00
850850+851851+#: green
852852+853853+# color3 #cecb00
854854+# color11 #fffd00
855855+856856+#: yellow
857857+858858+# color4 #0d73cc
859859+# color12 #1a8fff
860860+861861+#: blue
862862+863863+# color5 #cb1ed1
864864+# color13 #fd28ff
865865+866866+#: magenta
867867+868868+# color6 #0dcdcd
869869+# color14 #14ffff
870870+871871+#: cyan
872872+873873+# color7 #dddddd
874874+# color15 #ffffff
875875+876876+#: white
877877+878878+# mark1_foreground black
879879+880880+#: Color for marks of type 1
881881+882882+# mark1_background #98d3cb
883883+884884+#: Color for marks of type 1 (light steel blue)
885885+886886+# mark2_foreground black
887887+888888+#: Color for marks of type 2
889889+890890+# mark2_background #f2dcd3
891891+892892+#: Color for marks of type 1 (beige)
893893+894894+# mark3_foreground black
895895+896896+#: Color for marks of type 3
897897+898898+# mark3_background #f274bc
899899+900900+#: Color for marks of type 3 (violet)
901901+902902+#: }}}
903903+904904+#: }}}
905905+906906+#: Advanced {{{
907907+908908+# shell .
909909+910910+#: The shell program to execute. The default value of . means to use
911911+#: whatever shell is set as the default shell for the current user.
912912+#: Note that on macOS if you change this, you might need to add
913913+#: --login and --interactive to ensure that the shell starts in
914914+#: interactive mode and reads its startup rc files.
915915+916916+# editor .
917917+918918+#: The terminal editor (such as ``vim`` or ``nano``) to use when
919919+#: editing the kitty config file or similar tasks.
920920+921921+#: The default value of . means to use the environment variables
922922+#: VISUAL and EDITOR in that order. If these variables aren't set,
923923+#: kitty will run your shell (``$SHELL -l -i -c env``) to see if your
924924+#: shell config files set VISUAL or EDITOR. If that doesn't work,
925925+#: kitty will cycle through various known editors (``vim``, ``emacs``,
926926+#: etc) and take the first one that exists on your system.
927927+928928+# close_on_child_death no
929929+930930+#: Close the window when the child process (shell) exits. If no (the
931931+#: default), the terminal will remain open when the child exits as
932932+#: long as there are still processes outputting to the terminal (for
933933+#: example disowned or backgrounded processes). If yes, the window
934934+#: will close as soon as the child process exits. Note that setting it
935935+#: to yes means that any background processes still using the terminal
936936+#: can fail silently because their stdout/stderr/stdin no longer work.
937937+938938+# allow_remote_control no
939939+940940+#: Allow other programs to control kitty. If you turn this on other
941941+#: programs can control all aspects of kitty, including sending text
942942+#: to kitty windows, opening new windows, closing windows, reading the
943943+#: content of windows, etc. Note that this even works over ssh
944944+#: connections. You can chose to either allow any program running
945945+#: within kitty to control it, with yes or only programs that connect
946946+#: to the socket specified with the kitty --listen-on command line
947947+#: option, if you use the value socket-only. The latter is useful if
948948+#: you want to prevent programs running on a remote computer over ssh
949949+#: from controlling kitty. Reloading the config will not affect this
950950+#: setting.
951951+952952+# listen_on none
953953+954954+#: Tell kitty to listen to the specified unix/tcp socket for remote
955955+#: control connections. Note that this will apply to all kitty
956956+#: instances. It can be overridden by the kitty --listen-on command
957957+#: line flag. This option accepts only UNIX sockets, such as
958958+#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment
959959+#: variables are expanded. If {kitty_pid} is present then it is
960960+#: replaced by the PID of the kitty process, otherwise the PID of the
961961+#: kitty process is appended to the value, with a hyphen. This option
962962+#: is ignored unless you also set allow_remote_control to enable
963963+#: remote control. See the help for kitty --listen-on for more
964964+#: details. Changing this option by reloading the config is not
965965+#: supported.
966966+967967+# env
968968+969969+#: Specify environment variables to set in all child processes. Note
970970+#: that environment variables are expanded recursively, so if you
971971+#: use::
972972+973973+#: env MYVAR1=a
974974+#: env MYVAR2=${MYVAR1}/${HOME}/b
975975+976976+#: The value of MYVAR2 will be a/<path to home directory>/b.
977977+978978+# update_check_interval 24
979979+980980+#: Periodically check if an update to kitty is available. If an update
981981+#: is found a system notification is displayed informing you of the
982982+#: available update. The default is to check every 24 hrs, set to zero
983983+#: to disable. Changing this option by reloading the config is not
984984+#: supported.
985985+986986+# startup_session none
987987+988988+#: Path to a session file to use for all kitty instances. Can be
989989+#: overridden by using the kitty --session command line option for
990990+#: individual instances. See
991991+#: https://sw.kovidgoyal.net/kitty/overview/#startup-sessions in the
992992+#: kitty documentation for details. Note that relative paths are
993993+#: interpreted with respect to the kitty config directory. Environment
994994+#: variables in the path are expanded. Changing this option by
995995+#: reloading the config is not supported.
996996+997997+# clipboard_control write-clipboard write-primary
998998+999999+#: Allow programs running in kitty to read and write from the
10001000+#: clipboard. You can control exactly which actions are allowed. The
10011001+#: set of possible actions is: write-clipboard read-clipboard write-
10021002+#: primary read-primary. The default is to allow writing to the
10031003+#: clipboard and primary selection. Note that enabling the read
10041004+#: functionality is a security risk as it means that any program, even
10051005+#: one running on a remote server via SSH can read your clipboard.
10061006+10071007+# allow_hyperlinks yes
10081008+10091009+#: Process hyperlink (OSC 8) escape sequences. If disabled OSC 8
10101010+#: escape sequences are ignored. Otherwise they become clickable
10111011+#: links, that you can click by holding down ctrl+shift and clicking
10121012+#: with the mouse. The special value of ``ask`` means that kitty will
10131013+#: ask before opening the link.
10141014+10151015+# term xterm-kitty
10161016+10171017+#: The value of the TERM environment variable to set. Changing this
10181018+#: can break many terminal programs, only change it if you know what
10191019+#: you are doing, not because you read some advice on Stack Overflow
10201020+#: to change it. The TERM variable is used by various programs to get
10211021+#: information about the capabilities and behavior of the terminal. If
10221022+#: you change it, depending on what programs you run, and how
10231023+#: different the terminal you are changing it to is, various things
10241024+#: from key-presses, to colors, to various advanced features may not
10251025+#: work. Changing this option by reloading the config will only affect
10261026+#: newly created windows.
10271027+10281028+#: }}}
10291029+10301030+#: OS specific tweaks {{{
10311031+10321032+# wayland_titlebar_color system
10331033+10341034+#: Change the color of the kitty window's titlebar on Wayland systems
10351035+#: with client side window decorations such as GNOME. A value of
10361036+#: system means to use the default system color, a value of background
10371037+#: means to use the background color of the currently active window
10381038+#: and finally you can use an arbitrary color, such as #12af59 or red.
10391039+10401040+# macos_titlebar_color system
10411041+10421042+#: Change the color of the kitty window's titlebar on macOS. A value
10431043+#: of system means to use the default system color, a value of
10441044+#: background means to use the background color of the currently
10451045+#: active window and finally you can use an arbitrary color, such as
10461046+#: #12af59 or red. WARNING: This option works by using a hack, as
10471047+#: there is no proper Cocoa API for it. It sets the background color
10481048+#: of the entire window and makes the titlebar transparent. As such it
10491049+#: is incompatible with background_opacity. If you want to use both,
10501050+#: you are probably better off just hiding the titlebar with
10511051+#: hide_window_decorations.
10521052+10531053+# macos_option_as_alt no
10541054+10551055+#: Use the option key as an alt key. With this set to no, kitty will
10561056+#: use the macOS native Option+Key = unicode character behavior. This
10571057+#: will break any Alt+key keyboard shortcuts in your terminal
10581058+#: programs, but you can use the macOS unicode input technique. You
10591059+#: can use the values: left, right, or both to use only the left,
10601060+#: right or both Option keys as Alt, instead. Changing this setting by
10611061+#: reloading the config is not supported.
10621062+10631063+# macos_hide_from_tasks no
10641064+10651065+#: Hide the kitty window from running tasks (⌘+Tab) on macOS. Changing
10661066+#: this setting by reloading the config is not supported.
10671067+10681068+# macos_quit_when_last_window_closed no
10691069+10701070+#: Have kitty quit when all the top-level windows are closed. By
10711071+#: default, kitty will stay running, even with no open windows, as is
10721072+#: the expected behavior on macOS.
10731073+10741074+# macos_window_resizable yes
10751075+10761076+#: Disable this if you want kitty top-level (OS) windows to not be
10771077+#: resizable on macOS. Changing this setting by reloading the config
10781078+#: will only affect newly created windows.
10791079+10801080+# macos_thicken_font 0
10811081+10821082+#: Draw an extra border around the font with the given width, to
10831083+#: increase legibility at small font sizes. For example, a value of
10841084+#: 0.75 will result in rendering that looks similar to sub-pixel
10851085+#: antialiasing at common font sizes.
10861086+10871087+# macos_traditional_fullscreen no
10881088+10891089+#: Use the traditional full-screen transition, that is faster, but
10901090+#: less pretty.
10911091+10921092+# macos_show_window_title_in all
10931093+10941094+#: Show or hide the window title in the macOS window or menu-bar. A
10951095+#: value of window will show the title of the currently active window
10961096+#: at the top of the macOS window. A value of menubar will show the
10971097+#: title of the currently active window in the macOS menu-bar, making
10981098+#: use of otherwise wasted space. all will show the title everywhere
10991099+#: and none hides the title in the window and the menu-bar.
11001100+11011101+# macos_custom_beam_cursor no
11021102+11031103+#: Enable/disable custom mouse cursor for macOS that is easier to see
11041104+#: on both light and dark backgrounds. WARNING: this might make your
11051105+#: mouse cursor invisible on dual GPU machines. Changing this setting
11061106+#: by reloading the config is not supported.
11071107+11081108+# linux_display_server auto
11091109+11101110+#: Choose between Wayland and X11 backends. By default, an appropriate
11111111+#: backend based on the system state is chosen automatically. Set it
11121112+#: to x11 or wayland to force the choice. Changing this setting by
11131113+#: reloading the config is not supported.
11141114+11151115+#: }}}
11161116+11171117+#: Keyboard shortcuts {{{
11181118+11191119+#: Keys are identified simply by their lowercase unicode characters.
11201120+#: For example: ``a`` for the A key, ``[`` for the left square bracket
11211121+#: key, etc. For functional keys, such as ``Enter or Escape`` the
11221122+#: names are present at https://sw.kovidgoyal.net/kitty/keyboard-
11231123+#: protocol/#functional-key-definitions. For a list of modifier names,
11241124+#: see: GLFW mods <https://www.glfw.org/docs/latest/group__mods.html>
11251125+11261126+#: On Linux you can also use XKB key names to bind keys that are not
11271127+#: supported by GLFW. See XKB keys
11281128+#: <https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-
11291129+#: keysyms.h> for a list of key names. The name to use is the part
11301130+#: after the XKB_KEY_ prefix. Note that you can only use an XKB key
11311131+#: name for keys that are not known as GLFW keys.
11321132+11331133+#: Finally, you can use raw system key codes to map keys, again only
11341134+#: for keys that are not known as GLFW keys. To see the system key
11351135+#: code for a key, start kitty with the kitty --debug-input option.
11361136+#: Then kitty will output some debug text for every key event. In that
11371137+#: text look for ``native_code`` the value of that becomes the key
11381138+#: name in the shortcut. For example:
11391139+11401140+#: .. code-block:: none
11411141+11421142+#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a'
11431143+11441144+#: Here, the key name for the A key is 0x61 and you can use it with::
11451145+11461146+#: map ctrl+0x61 something
11471147+11481148+#: to map ctrl+a to something.
11491149+11501150+#: You can use the special action no_op to unmap a keyboard shortcut
11511151+#: that is assigned in the default configuration::
11521152+11531153+#: map kitty_mod+space no_op
11541154+11551155+#: You can combine multiple actions to be triggered by a single
11561156+#: shortcut, using the syntax below::
11571157+11581158+#: map key combine <separator> action1 <separator> action2 <separator> action3 ...
11591159+11601160+#: For example::
11611161+11621162+#: map kitty_mod+e combine : new_window : next_layout
11631163+11641164+#: this will create a new window and switch to the next available
11651165+#: layout
11661166+11671167+#: You can use multi-key shortcuts using the syntax shown below::
11681168+11691169+#: map key1>key2>key3 action
11701170+11711171+#: For example::
11721172+11731173+#: map ctrl+f>2 set_font_size 20
11741174+11751175+#: The full list of actions that can be mapped to key presses is
11761176+#: available here </actions>.
11771177+11781178+# kitty_mod ctrl+shift
11791179+11801180+#: The value of kitty_mod is used as the modifier for all default
11811181+#: shortcuts, you can change it in your kitty.conf to change the
11821182+#: modifiers for all the default shortcuts.
11831183+11841184+# clear_all_shortcuts no
11851185+11861186+#: You can have kitty remove all shortcut definition seen up to this
11871187+#: point. Useful, for instance, to remove the default shortcuts.
11881188+11891189+# kitten_alias hints hints --hints-offset=0
11901190+11911191+#: You can create aliases for kitten names, this allows overriding the
11921192+#: defaults for kitten options and can also be used to shorten
11931193+#: repeated mappings of the same kitten with a specific group of
11941194+#: options. For example, the above alias changes the default value of
11951195+#: kitty +kitten hints --hints-offset to zero for all mappings,
11961196+#: including the builtin ones.
11971197+11981198+#: Clipboard {{{
11991199+12001200+# map kitty_mod+c copy_to_clipboard
12011201+12021202+#: There is also a copy_or_interrupt action that can be optionally
12031203+#: mapped to Ctrl+c. It will copy only if there is a selection and
12041204+#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt
12051205+#: will copy and clear the selection or send an interrupt if there is
12061206+#: no selection.
12071207+12081208+# map kitty_mod+v paste_from_clipboard
12091209+# map kitty_mod+s paste_from_selection
12101210+# map kitty_mod+o pass_selection_to_program
12111211+12121212+#: You can also pass the contents of the current selection to any
12131213+#: program using pass_selection_to_program. By default, the system's
12141214+#: open program is used, but you can specify your own, the selection
12151215+#: will be passed as a command line argument to the program, for
12161216+#: example::
12171217+12181218+#: map kitty_mod+o pass_selection_to_program firefox
12191219+12201220+#: You can pass the current selection to a terminal program running in
12211221+#: a new kitty window, by using the @selection placeholder::
12221222+12231223+#: map kitty_mod+y new_window less @selection
12241224+12251225+#: }}}
12261226+12271227+#: Scrolling {{{
12281228+12291229+# map kitty_mod+up scroll_line_up
12301230+# map kitty_mod+down scroll_line_down
12311231+# map kitty_mod+page_up scroll_page_up
12321232+# map kitty_mod+page_down scroll_page_down
12331233+# map kitty_mod+home scroll_home
12341234+# map kitty_mod+end scroll_end
12351235+# map kitty_mod+h show_scrollback
12361236+12371237+#: You can pipe the contents of the current screen + history buffer as
12381238+#: STDIN to an arbitrary program using the ``launch`` function. For
12391239+#: example, the following opens the scrollback buffer in less in an
12401240+#: overlay window::
12411241+12421242+#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
12431243+12441244+#: For more details on piping screen and buffer contents to external
12451245+#: programs, see launch.
12461246+12471247+#: }}}
12481248+12491249+#: Window management {{{
12501250+12511251+# map kitty_mod+enter new_window
12521252+12531253+#: You can open a new window running an arbitrary program, for
12541254+#: example::
12551255+12561256+#: map kitty_mod+y launch mutt
12571257+12581258+#: You can open a new window with the current working directory set to
12591259+#: the working directory of the current window using::
12601260+12611261+#: map ctrl+alt+enter launch --cwd=current
12621262+12631263+#: You can open a new window that is allowed to control kitty via the
12641264+#: kitty remote control facility by prefixing the command line with @.
12651265+#: Any programs running in that window will be allowed to control
12661266+#: kitty. For example::
12671267+12681268+#: map ctrl+enter launch --allow-remote-control some_program
12691269+12701270+#: You can open a new window next to the currently active window or as
12711271+#: the first window, with::
12721272+12731273+#: map ctrl+n launch --location=neighbor some_program
12741274+#: map ctrl+f launch --location=first some_program
12751275+12761276+#: For more details, see launch.
12771277+12781278+# map kitty_mod+n new_os_window
12791279+12801280+#: Works like new_window above, except that it opens a top level OS
12811281+#: kitty window. In particular you can use new_os_window_with_cwd to
12821282+#: open a window with the current working directory.
12831283+12841284+# map kitty_mod+w close_window
12851285+# map kitty_mod+] next_window
12861286+# map kitty_mod+[ previous_window
12871287+# map kitty_mod+f move_window_forward
12881288+# map kitty_mod+b move_window_backward
12891289+# map kitty_mod+` move_window_to_top
12901290+# map kitty_mod+r start_resizing_window
12911291+# map kitty_mod+1 first_window
12921292+# map kitty_mod+2 second_window
12931293+# map kitty_mod+3 third_window
12941294+# map kitty_mod+4 fourth_window
12951295+# map kitty_mod+5 fifth_window
12961296+# map kitty_mod+6 sixth_window
12971297+# map kitty_mod+7 seventh_window
12981298+# map kitty_mod+8 eighth_window
12991299+# map kitty_mod+9 ninth_window
13001300+# map kitty_mod+0 tenth_window
13011301+#: }}}
13021302+13031303+#: Tab management {{{
13041304+13051305+# map kitty_mod+right next_tab
13061306+# map kitty_mod+left previous_tab
13071307+# map kitty_mod+t new_tab
13081308+# map kitty_mod+q close_tab
13091309+# map shift+cmd+w close_os_window
13101310+# map kitty_mod+. move_tab_forward
13111311+# map kitty_mod+, move_tab_backward
13121312+# map kitty_mod+alt+t set_tab_title
13131313+13141314+#: You can also create shortcuts to go to specific tabs, with 1 being
13151315+#: the first tab, 2 the second tab and -1 being the previously active
13161316+#: tab, and any number larger than the last tab being the last tab::
13171317+13181318+#: map ctrl+alt+1 goto_tab 1
13191319+#: map ctrl+alt+2 goto_tab 2
13201320+13211321+#: Just as with new_window above, you can also pass the name of
13221322+#: arbitrary commands to run when using new_tab and use
13231323+#: new_tab_with_cwd. Finally, if you want the new tab to open next to
13241324+#: the current tab rather than at the end of the tabs list, use::
13251325+13261326+#: map ctrl+t new_tab !neighbor [optional cmd to run]
13271327+#: }}}
13281328+13291329+#: Layout management {{{
13301330+13311331+# map kitty_mod+l next_layout
13321332+13331333+#: You can also create shortcuts to switch to specific layouts::
13341334+13351335+#: map ctrl+alt+t goto_layout tall
13361336+#: map ctrl+alt+s goto_layout stack
13371337+13381338+#: Similarly, to switch back to the previous layout::
13391339+13401340+#: map ctrl+alt+p last_used_layout
13411341+13421342+#: There is also a toggle layout function that switches to the named
13431343+#: layout or back to the previous layout if in the named layout.
13441344+#: Useful to temporarily "zoom" the active window by switching to the
13451345+#: stack layout::
13461346+13471347+#: map ctrl+alt+z toggle_layout stack
13481348+#: }}}
13491349+13501350+#: Font sizes {{{
13511351+13521352+#: You can change the font size for all top-level kitty OS windows at
13531353+#: a time or only the current one.
13541354+13551355+# map kitty_mod+equal change_font_size all +2.0
13561356+# map kitty_mod+minus change_font_size all -2.0
13571357+# map kitty_mod+backspace change_font_size all 0
13581358+13591359+#: To setup shortcuts for specific font sizes::
13601360+13611361+#: map kitty_mod+f6 change_font_size all 10.0
13621362+13631363+#: To setup shortcuts to change only the current OS window's font
13641364+#: size::
13651365+13661366+#: map kitty_mod+f6 change_font_size current 10.0
13671367+#: }}}
13681368+13691369+#: Select and act on visible text {{{
13701370+13711371+#: Use the hints kitten to select text and either pass it to an
13721372+#: external program or insert it into the terminal or copy it to the
13731373+#: clipboard.
13741374+13751375+# map kitty_mod+e open_url_with_hints
13761376+13771377+#: Open a currently visible URL using the keyboard. The program used
13781378+#: to open the URL is specified in open_url_with.
13791379+13801380+# map kitty_mod+p>f kitten hints --type path --program -
13811381+13821382+#: Select a path/filename and insert it into the terminal. Useful, for
13831383+#: instance to run git commands on a filename output from a previous
13841384+#: git command.
13851385+13861386+# map kitty_mod+p>shift+f kitten hints --type path
13871387+13881388+#: Select a path/filename and open it with the default open program.
13891389+13901390+# map kitty_mod+p>l kitten hints --type line --program -
13911391+13921392+#: Select a line of text and insert it into the terminal. Use for the
13931393+#: output of things like: ls -1
13941394+13951395+# map kitty_mod+p>w kitten hints --type word --program -
13961396+13971397+#: Select words and insert into terminal.
13981398+13991399+# map kitty_mod+p>h kitten hints --type hash --program -
14001400+14011401+#: Select something that looks like a hash and insert it into the
14021402+#: terminal. Useful with git, which uses sha1 hashes to identify
14031403+#: commits
14041404+14051405+# map kitty_mod+p>n kitten hints --type linenum
14061406+14071407+#: Select something that looks like filename:linenum and open it in
14081408+#: vim at the specified line number.
14091409+14101410+# map kitty_mod+p>y kitten hints --type hyperlink
14111411+14121412+#: Select a hyperlink (i.e. a URL that has been marked as such by the
14131413+#: terminal program, for example, by ls --hyperlink=auto).
14141414+14151415+14161416+#: The hints kitten has many more modes of operation that you can map
14171417+#: to different shortcuts. For a full description see kittens/hints.
14181418+#: }}}
14191419+14201420+#: Miscellaneous {{{
14211421+14221422+# map kitty_mod+f11 toggle_fullscreen
14231423+# map kitty_mod+f10 toggle_maximized
14241424+# map kitty_mod+u kitten unicode_input
14251425+# map kitty_mod+f2 edit_config_file
14261426+# map kitty_mod+escape kitty_shell window
14271427+14281428+#: Open the kitty shell in a new window/tab/overlay/os_window to
14291429+#: control kitty using commands.
14301430+14311431+# map kitty_mod+a>m set_background_opacity +0.1
14321432+# map kitty_mod+a>l set_background_opacity -0.1
14331433+# map kitty_mod+a>1 set_background_opacity 1
14341434+# map kitty_mod+a>d set_background_opacity default
14351435+# map kitty_mod+delete clear_terminal reset active
14361436+14371437+#: You can create shortcuts to clear/reset the terminal. For example::
14381438+14391439+#: # Reset the terminal
14401440+#: map kitty_mod+f9 clear_terminal reset active
14411441+#: # Clear the terminal screen by erasing all contents
14421442+#: map kitty_mod+f10 clear_terminal clear active
14431443+#: # Clear the terminal scrollback by erasing it
14441444+#: map kitty_mod+f11 clear_terminal scrollback active
14451445+#: # Scroll the contents of the screen into the scrollback
14461446+#: map kitty_mod+f12 clear_terminal scroll active
14471447+14481448+#: If you want to operate on all windows instead of just the current
14491449+#: one, use all instead of active.
14501450+14511451+#: It is also possible to remap Ctrl+L to both scroll the current
14521452+#: screen contents into the scrollback buffer and clear the screen,
14531453+#: instead of just clearing the screen, for example, for ZSH add the
14541454+#: following to ~/.zshrc:
14551455+14561456+#: .. code-block:: sh
14571457+14581458+#: scroll-and-clear-screen() {
14591459+#: printf '\n%.0s' {1..$LINES}
14601460+#: zle clear-screen
14611461+#: }
14621462+#: zle -N scroll-and-clear-screen
14631463+#: bindkey '^l' scroll-and-clear-screen
14641464+14651465+# map kitty_mod+f5 load_config_file
14661466+14671467+#: Reload kitty.conf, applying any changes since the last time it was
14681468+#: loaded. Note that a handful of settings cannot be dynamically
14691469+#: changed and require a full restart of kitty. You can also map a
14701470+#: keybinding to load a different config file, for example::
14711471+14721472+#: map f5 load_config /path/to/alternative/kitty.conf
14731473+14741474+#: Note that all setting from the original kitty.conf are discarded,
14751475+#: in other words the new conf settings *replace* the old ones.
14761476+14771477+# map kitty_mod+f6 debug_config
14781478+14791479+#: Show details about exactly what configuration kitty is running with
14801480+#: and its host environment. Useful for debugging issues.
14811481+14821482+14831483+#: You can tell kitty to send arbitrary (UTF-8) encoded text to the
14841484+#: client program when pressing specified shortcut keys. For example::
14851485+14861486+#: map ctrl+alt+a send_text all Special text
14871487+14881488+#: This will send "Special text" when you press the ctrl+alt+a key
14891489+#: combination. The text to be sent is a python string literal so you
14901490+#: can use escapes like \x1b to send control codes or \u21fb to send
14911491+#: unicode characters (or you can just input the unicode characters
14921492+#: directly as UTF-8 text). The first argument to send_text is the
14931493+#: keyboard modes in which to activate the shortcut. The possible
14941494+#: values are normal or application or kitty or a comma separated
14951495+#: combination of them. The special keyword all means all modes. The
14961496+#: modes normal and application refer to the DECCKM cursor key mode
14971497+#: for terminals, and kitty refers to the special kitty extended
14981498+#: keyboard protocol.
14991499+15001500+#: Another example, that outputs a word and then moves the cursor to
15011501+#: the start of the line (same as pressing the Home key)::
15021502+15031503+#: map ctrl+alt+a send_text normal Word\x1b[H
15041504+#: map ctrl+alt+a send_text application Word\x1bOH
15051505+15061506+#: }}}
15071507+15081508+#: }}}