1KITTY.CONF(5) kitty KITTY.CONF(5)
2
3
4
6 kitty.conf - kitty.conf Documentation
7
8 kitty is highly customizable, everything from keyboard shortcuts, to
9 rendering frames-per-second. See below for an overview of all cus‐
10 tomization possibilities.
11
12 You can open the config file within kitty by pressing ctrl+shift+f2.
13 You can reload the config file within kitty by pressing ctrl+shift+f5
14 or sending kitty the SIGUSR1 signal. You can also display the current
15 configuration by pressing the ctrl+shift+f6 key.
16
17 kitty looks for a config file in the OS config directories (usually
18 ~/.config/kitty/kitty.conf) but you can pass a specific path via the
19 kitty --config option or use the KITTY_CONFIG_DIRECTORY environment
20 variable. See the kitty --config option for full details.
21
22 Comments can be added to the config file as lines starting with the #
23 character. This works only if the # character is the first character in
24 the line.
25
26 You can include secondary config files via the include directive. If
27 you use a relative path for include, it is resolved with respect to the
28 location of the current config file. Note that environment variables
29 are expanded, so ${USER}.conf becomes name.conf if USER=name. For ex‐
30 ample:
31
32 include other.conf
33
35 kitty has very powerful font management. You can configure individual
36 font faces and even specify special fonts for particular characters.
37
38 font_family, bold_font, italic_font, bold_italic_font
39
40 font_family monospace
41 bold_font auto
42 italic_font auto
43 bold_italic_font auto
44
45 You can specify different fonts for the bold/italic/bold-italic vari‐
46 ants. To get a full list of supported fonts use the kitty list-fonts
47 command. By default they are derived automatically, by the OSes font
48 system. Setting them manually is useful for font families that have
49 many weight variants like Book, Medium, Thick, etc. For example:
50
51 font_family Operator Mono Book
52 bold_font Operator Mono Medium
53 italic_font Operator Mono Book Italic
54 bold_italic_font Operator Mono Medium Italic
55
56 font_size
57
58 font_size 11.0
59
60 Font size (in pts)
61
62 force_ltr
63
64 force_ltr no
65
66 kitty does not support BIDI (bidirectional text), however, for RTL
67 scripts, words are automatically displayed in RTL. That is to say, in
68 an RTL script, the words "HELLO WORLD" display in kitty as "WORLD
69 HELLO", and if you try to select a substring of an RTL-shaped string,
70 you will get the character that would be there had the the string been
71 LTR. For example, assuming the Hebrew word ירושלים, selecting the char‐
72 acter that on the screen appears to be ם actually writes into the se‐
73 lection buffer the character י. kitty's default behavior is useful in
74 conjunction with a filter to reverse the word order, however, if you
75 wish to manipulate RTL glyphs, it can be very challenging to work with,
76 so this option is provided to turn it off. Furthermore, this option can
77 be used with the command line program GNU FriBidi to get BIDI support,
78 because it will force kitty to always treat the text as LTR, which
79 FriBidi expects for terminals.
80
81 adjust_line_height, adjust_column_width
82
83 adjust_line_height 0
84 adjust_column_width 0
85
86 Change the size of each character cell kitty renders. You can use ei‐
87 ther numbers, which are interpreted as pixels or percentages (number
88 followed by %), which are interpreted as percentages of the unmodified
89 values. You can use negative pixels or percentages less than 100% to
90 reduce sizes (but this might cause rendering artifacts).
91
92 adjust_baseline
93
94 adjust_baseline 0
95
96 Adjust the vertical alignment of text (the height in the cell at which
97 text is positioned). You can use either numbers, which are interpreted
98 as pixels or a percentages (number followed by %), which are inter‐
99 preted as the percentage of the line height. A positive value moves the
100 baseline up, and a negative value moves them down. The underline and
101 strikethrough positions are adjusted accordingly.
102
103 symbol_map
104
105 symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
106
107 Map the specified unicode codepoints to a particular font. Useful if
108 you need special rendering for some symbols, such as for Powerline.
109 Avoids the need for patched fonts. Each unicode code point is specified
110 in the form U+<code point in hexadecimal>. You can specify multiple
111 code points, separated by commas and ranges separated by hyphens. sym‐
112 bol_map itself can be specified multiple times. Syntax is:
113
114 symbol_map codepoints Font Family Name
115
116 disable_ligatures
117
118 disable_ligatures never
119
120 Choose how you want to handle multi-character ligatures. The default is
121 to always render them. You can tell kitty to not render them when the
122 cursor is over them by using cursor to make editing easier, or have
123 kitty never render them at all by using always, if you don't like them.
124 The ligature strategy can be set per-window either using the kitty re‐
125 mote control facility or by defining shortcuts for it in kitty.conf,
126 for example:
127
128 map alt+1 disable_ligatures_in active always
129 map alt+2 disable_ligatures_in all never
130 map alt+3 disable_ligatures_in tab cursor
131
132 Note that this refers to programming ligatures, typically implemented
133 using the calt OpenType feature. For disabling general ligatures, use
134 the font_features setting.
135
136 font_features
137
138 font_features none
139
140 Choose exactly which OpenType features to enable or disable. This is
141 useful as some fonts might have features worthwhile in a terminal. For
142 example, Fira Code Retina includes a discretionary feature, zero, which
143 in that font changes the appearance of the zero (0), to make it more
144 easily distinguishable from Ø. Fira Code Retina also includes other
145 discretionary features known as Stylistic Sets which have the tags ss01
146 through ss20.
147
148 For the exact syntax to use for individual features, see the Harfbuzz
149 documentation.
150
151 Note that this code is indexed by PostScript name, and not the font
152 family. This allows you to define very precise feature settings; e.g.
153 you can disable a feature in the italic font but not in the regular
154 font.
155
156 On Linux, these are read from the FontConfig database first and then
157 this, setting is applied, so they can be configured in a single, cen‐
158 tral place.
159
160 To get the PostScript name for a font, use kitty + list-fonts
161 --psnames:
162
163 $ kitty + list-fonts --psnames | grep Fira
164 Fira Code
165 Fira Code Bold (FiraCode-Bold)
166 Fira Code Light (FiraCode-Light)
167 Fira Code Medium (FiraCode-Medium)
168 Fira Code Regular (FiraCode-Regular)
169 Fira Code Retina (FiraCode-Retina)
170
171 The part in brackets is the PostScript name.
172
173 Enable alternate zero and oldstyle numerals:
174
175 font_features FiraCode-Retina +zero +onum
176
177 Enable only alternate zero:
178
179 font_features FiraCode-Retina +zero
180
181 Disable the normal ligatures, but keep the calt feature which (in this
182 font) breaks up monotony:
183
184 font_features TT2020StyleB-Regular -liga +calt
185
186 In conjunction with force_ltr, you may want to disable Arabic shaping
187 entirely, and only look at their isolated forms if they show up in a
188 document. You can do this with e.g.:
189
190 font_features UnifontMedium +isol -medi -fina -init
191
192 box_drawing_scale
193
194 box_drawing_scale 0.001, 1, 1.5, 2
195
196 Change the sizes of the lines used for the box drawing unicode charac‐
197 ters These values are in pts. They will be scaled by the monitor DPI to
198 arrive at a pixel value. There must be four values corresponding to
199 thin, normal, thick, and very thick lines.
200
202 cursor
203
204 cursor #cccccc
205
206 Default cursor color
207
208 cursor_text_color
209
210 cursor_text_color #111111
211
212 Choose the color of text under the cursor. If you want it rendered with
213 the background color of the cell underneath instead, use the special
214 keyword: background
215
216 cursor_shape
217
218 cursor_shape block
219
220 The cursor shape can be one of (block, beam, underline). Note that when
221 reloading the config this will be changed only if the cursor shape has
222 not been set by the program running in the terminal.
223
224 cursor_beam_thickness
225
226 cursor_beam_thickness 1.5
227
228 Defines the thickness of the beam cursor (in pts)
229
230 cursor_underline_thickness
231
232 cursor_underline_thickness 2.0
233
234 Defines the thickness of the underline cursor (in pts)
235
236 cursor_blink_interval
237
238 cursor_blink_interval -1
239
240 The interval (in seconds) at which to blink the cursor. Set to zero to
241 disable blinking. Negative values mean use system default. Note that
242 numbers smaller than repaint_delay will be limited to repaint_delay.
243
244 cursor_stop_blinking_after
245
246 cursor_stop_blinking_after 15.0
247
248 Stop blinking cursor after the specified number of seconds of keyboard
249 inactivity. Set to zero to never stop blinking.
250
252 scrollback_lines
253
254 scrollback_lines 2000
255
256 Number of lines of history to keep in memory for scrolling back. Memory
257 is allocated on demand. Negative numbers are (effectively) infinite
258 scrollback. Note that using very large scrollback is not recommended
259 as it can slow down performance of the terminal and also use large
260 amounts of RAM. Instead, consider using scrollback_pager_history_size.
261 Note that on config reload if this is changed it will only affect newly
262 created windows, not existing ones.
263
264 scrollback_pager
265
266 scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
267
268 Program with which to view scrollback in a new window. The scrollback
269 buffer is passed as STDIN to this program. If you change it, make sure
270 the program you use can handle ANSI escape sequences for colors and
271 text formatting. INPUT_LINE_NUMBER in the command line above will be
272 replaced by an integer representing which line should be at the top of
273 the screen. Similarly CURSOR_LINE and CURSOR_COLUMN will be replaced by
274 the current cursor position.
275
276 scrollback_pager_history_size
277
278 scrollback_pager_history_size 0
279
280 Separate scrollback history size, used only for browsing the scrollback
281 buffer (in MB). This separate buffer is not available for interactive
282 scrolling but will be piped to the pager program when viewing scroll‐
283 back buffer in a separate window. The current implementation stores the
284 data in UTF-8, so approximatively 10000 lines per megabyte at 100 chars
285 per line, for pure ASCII text, unformatted text. A value of zero or
286 less disables this feature. The maximum allowed size is 4GB. Note that
287 on config reload if this is changed it will only affect newly created
288 windows, not existing ones.
289
290 scrollback_fill_enlarged_window
291
292 scrollback_fill_enlarged_window no
293
294 Fill new space with lines from the scrollback buffer after enlarging a
295 window.
296
297 wheel_scroll_multiplier
298
299 wheel_scroll_multiplier 5.0
300
301 Modify the amount scrolled by the mouse wheel. Note this is only used
302 for low precision scrolling devices, not for high precision scrolling
303 on platforms such as macOS and Wayland. Use negative numbers to change
304 scroll direction.
305
306 touch_scroll_multiplier
307
308 touch_scroll_multiplier 1.0
309
310 Modify the amount scrolled by a touchpad. Note this is only used for
311 high precision scrolling devices on platforms such as macOS and Way‐
312 land. Use negative numbers to change scroll direction.
313
315 mouse_hide_wait
316
317 mouse_hide_wait 3.0
318
319 Hide mouse cursor after the specified number of seconds of the mouse
320 not being used. Set to zero to disable mouse cursor hiding. Set to a
321 negative value to hide the mouse cursor immediately when typing text.
322 Disabled by default on macOS as getting it to work robustly with the
323 ever-changing sea of bugs that is Cocoa is too much effort.
324
325 url_color, url_style
326
327 url_color #0087bd
328 url_style curly
329
330 The color and style for highlighting URLs on mouse-over. url_style can
331 be one of: none, single, double, curly
332
333 open_url_with
334
335 open_url_with default
336
337 The program with which to open URLs that are clicked on. The special
338 value default means to use the operating system's default URL handler.
339
340 url_prefixes
341
342 url_prefixes http https file ftp gemini irc gopher mailto news git
343
344 The set of URL prefixes to look for when detecting a URL under the
345 mouse cursor.
346
347 detect_urls
348
349 detect_urls yes
350
351 Detect URLs under the mouse. Detected URLs are highlighted with an un‐
352 derline and the mouse cursor becomes a hand over them. Even if this op‐
353 tion is disabled, URLs are still clickable.
354
355 url_excluded_characters
356
357 url_excluded_characters
358
359 Additional characters to be disallowed from URLs, when detecting URLs
360 under the mouse cursor. By default, all characters legal in URLs are
361 allowed.
362
363 copy_on_select
364
365 copy_on_select no
366
367 Copy to clipboard or a private buffer on select. With this set to clip‐
368 board, simply selecting text with the mouse will cause the text to be
369 copied to clipboard. Useful on platforms such as macOS that do not have
370 the concept of primary selections. You can instead specify a name such
371 as a1 to copy to a private kitty buffer instead. Map a shortcut with
372 the paste_from_buffer action to paste from this private buffer. For
373 example:
374
375 map cmd+shift+v paste_from_buffer a1
376
377 Note that copying to the clipboard is a security risk, as all programs,
378 including websites open in your browser can read the contents of the
379 system clipboard.
380
381 strip_trailing_spaces
382
383 strip_trailing_spaces never
384
385 Remove spaces at the end of lines when copying to clipboard. A value of
386 smart will do it when using normal selections, but not rectangle selec‐
387 tions. always will always do it.
388
389 select_by_word_characters
390
391 select_by_word_characters @-./_~?&=%+#
392
393 Characters considered part of a word when double clicking. In addition
394 to these characters any character that is marked as an alphanumeric
395 character in the unicode database will be matched.
396
397 click_interval
398
399 click_interval -1.0
400
401 The interval between successive clicks to detect double/triple clicks
402 (in seconds). Negative numbers will use the system default instead, if
403 available, or fallback to 0.5.
404
405 focus_follows_mouse
406
407 focus_follows_mouse no
408
409 Set the active window to the window under the mouse when moving the
410 mouse around
411
412 pointer_shape_when_grabbed
413
414 pointer_shape_when_grabbed arrow
415
416 The shape of the mouse pointer when the program running in the terminal
417 grabs the mouse. Valid values are: arrow, beam and hand
418
419 default_pointer_shape
420
421 default_pointer_shape beam
422
423 The default shape of the mouse pointer. Valid values are: arrow, beam
424 and hand
425
426 pointer_shape_when_dragging
427
428 pointer_shape_when_dragging beam
429
430 The default shape of the mouse pointer when dragging across text. Valid
431 values are: arrow, beam and hand
432
433 Mouse actions
434 Mouse buttons can be remapped to perform arbitrary actions. The syntax
435 for doing so is:
436
437 mouse_map button-name event-type modes action
438
439 Where button-name is one of left, middle, right or b1 ... b8 with added
440 keyboard modifiers, for example: ctrl+shift+left refers to holding the
441 ctrl+shift keys while clicking with the left mouse button. The number
442 b1 ... b8 can be used to refer to upto eight buttons on a mouse.
443
444 event-type is one press, release, doublepress, triplepress, click and
445 doubleclick. modes indicates whether the action is performed when the
446 mouse is grabbed by the program running in the terminal, or not. It can
447 have one or more or the values, grabbed,ungrabbed. grabbed refers to
448 when the program running in the terminal has requested mouse events.
449 Note that the click and double click events have a delay of
450 click_interval to disambiguate from double and triple presses.
451
452 You can run kitty with the kitty --debug-input command line option to
453 see mouse events. See the builtin actions below to get a sense of what
454 is possible.
455
456 If you want to unmap an action map it to no-op. For example, to disable
457 opening of URLs with a plain click:
458
459 mouse_map left click ungrabbed no-op
460
461 NOTE:
462 Once a selection is started, releasing the button that started it
463 will automatically end it and no release event will be dispatched.
464
465 Click the link under the mouse cursor when no selection is created
466
467 mouse_map left click ungrabbed mouse_click_url_or_select
468
469 Click the link under the mouse cursor when no selection is created even
470 if grabbed
471
472 mouse_map shift+left click grabbed,ungrabbed mouse_click_url_or_select
473
474 Click the link under the mouse cursor
475
476 mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_click_url
477
478 Variant with ctrl+shift is present because the simple click based ver‐
479 sion has an unavoidable delay of click_interval, to disambiguate clicks
480 from double clicks.
481
482 Discard press event for link click
483
484 mouse_map ctrl+shift+left press grabbed discard_event
485
486 Prevent this press event from being sent to the program that has
487 grabbed the mouse, as the corresponding release event is used to open a
488 URL.
489
490 Paste from the primary selection
491
492 mouse_map middle release ungrabbed paste_from_selection
493
494 Start selecting text
495
496 mouse_map left press ungrabbed mouse_selection normal
497
498 Start selecting text in a rectangle
499
500 mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
501
502 Select a word
503
504 mouse_map left doublepress ungrabbed mouse_selection word
505
506 Select a line
507
508 mouse_map left triplepress ungrabbed mouse_selection line
509
510 Select the entire line
511
512 Select line from point
513
514 mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point
515
516 Select from the clicked point to the end of the line
517
518 Extend the current selection
519
520 mouse_map right press ungrabbed mouse_selection extend
521
522 Paste from the primary selection even when grabbed
523
524 mouse_map shift+middle release ungrabbed,grabbed paste_selection
525
526 Start selecting text even when grabbed
527
528 mouse_map shift+left press ungrabbed,grabbed mouse_selection normal
529
530 Start selecting text in a rectangle even when grabbed
531
532 mouse_map shift+ctrl+alt+left press ungrabbed,grabbed mouse_selection rectangle
533
534 Select a word even when grabbed
535
536 mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word
537
538 Select a line even when grabbed
539
540 mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line
541
542 Select the entire line
543
544 Select line from point even when grabbed
545
546 mouse_map shift+ctrl+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point
547
548 Select from the clicked point to the end of the line
549
550 Extend the current selection even when grabbed
551
552 mouse_map shift+right press ungrabbed,grabbed mouse_selection extend
553
555 repaint_delay
556
557 repaint_delay 10
558
559 Delay (in milliseconds) between screen updates. Decreasing it, in‐
560 creases frames-per-second (FPS) at the cost of more CPU usage. The de‐
561 fault value yields ~100 FPS which is more than sufficient for most
562 uses. Note that to actually achieve 100 FPS you have to either set
563 sync_to_monitor to no or use a monitor with a high refresh rate. Also,
564 to minimize latency when there is pending input to be processed, re‐
565 paint_delay is ignored.
566
567 input_delay
568
569 input_delay 3
570
571 Delay (in milliseconds) before input from the program running in the
572 terminal is processed. Note that decreasing it will increase respon‐
573 siveness, but also increase CPU usage and might cause flicker in full
574 screen programs that redraw the entire screen on each loop, because
575 kitty is so fast that partial screen updates will be drawn.
576
577 sync_to_monitor
578
579 sync_to_monitor yes
580
581 Sync screen updates to the refresh rate of the monitor. This prevents
582 tearing (https://en.wikipedia.org/wiki/Screen_tearing) when scrolling.
583 However, it limits the rendering speed to the refresh rate of your mon‐
584 itor. With a very high speed mouse/high keyboard repeat rate, you may
585 notice some slight input latency. If so, set this to no.
586
588 enable_audio_bell
589
590 enable_audio_bell yes
591
592 Enable/disable the audio bell. Useful in environments that require si‐
593 lence.
594
595 visual_bell_duration
596
597 visual_bell_duration 0.0
598
599 Visual bell duration. Flash the screen when a bell occurs for the spec‐
600 ified number of seconds. Set to zero to disable.
601
602 window_alert_on_bell
603
604 window_alert_on_bell yes
605
606 Request window attention on bell. Makes the dock icon bounce on macOS
607 or the taskbar flash on linux.
608
609 bell_on_tab
610
611 bell_on_tab yes
612
613 Show a bell symbol on the tab if a bell occurs in one of the windows in
614 the tab and the window is not the currently focused window
615
616 command_on_bell
617
618 command_on_bell none
619
620 Program to run when a bell occurs.
621
623 remember_window_size, initial_window_width, initial_window_height
624
625 remember_window_size yes
626 initial_window_width 640
627 initial_window_height 400
628
629 If enabled, the window size will be remembered so that new instances of
630 kitty will have the same size as the previous instance. If disabled,
631 the window will initially have size configured by initial_win‐
632 dow_width/height, in pixels. You can use a suffix of "c" on the
633 width/height values to have them interpreted as number of cells instead
634 of pixels.
635
636 enabled_layouts
637
638 enabled_layouts *
639
640 The enabled window layouts. A comma separated list of layout names. The
641 special value all means all layouts. The first listed layout will be
642 used as the startup layout. Default configuration is all layouts in al‐
643 phabetical order. For a list of available layouts, see the layouts.
644
645 window_resize_step_cells, window_resize_step_lines
646
647 window_resize_step_cells 2
648 window_resize_step_lines 2
649
650 The step size (in units of cell width/cell height) to use when resizing
651 windows. The cells value is used for horizontal resizing and the lines
652 value for vertical resizing.
653
654 window_border_width
655
656 window_border_width 0.5pt
657
658 The width of window borders. Can be either in pixels (px) or pts (pt).
659 Values in pts will be rounded to the nearest number of pixels based on
660 screen resolution. If not specified the unit is assumed to be pts.
661 Note that borders are displayed only when more than one window is visi‐
662 ble. They are meant to separate multiple windows.
663
664 draw_minimal_borders
665
666 draw_minimal_borders yes
667
668 Draw only the minimum borders needed. This means that only the minimum
669 needed borders for inactive windows are drawn. That is only the borders
670 that separate the inactive window from a neighbor. Note that setting a
671 non-zero window margin overrides this and causes all borders to be
672 drawn.
673
674 window_margin_width
675
676 window_margin_width 0
677
678 The window margin (in pts) (blank area outside the border). A single
679 value sets all four sides. Two values set the vertical and horizontal
680 sides. Three values set top, horizontal and bottom. Four values set
681 top, right, bottom and left.
682
683 single_window_margin_width
684
685 single_window_margin_width -1
686
687 The window margin (in pts) to use when only a single window is visible.
688 Negative values will cause the value of window_margin_width to be used
689 instead. A single value sets all four sides. Two values set the verti‐
690 cal and horizontal sides. Three values set top, horizontal and bottom.
691 Four values set top, right, bottom and left.
692
693 window_padding_width
694
695 window_padding_width 0
696
697 The window padding (in pts) (blank area between the text and the window
698 border). A single value sets all four sides. Two values set the verti‐
699 cal and horizontal sides. Three values set top, horizontal and bottom.
700 Four values set top, right, bottom and left.
701
702 placement_strategy
703
704 placement_strategy center
705
706 When the window size is not an exact multiple of the cell size, the
707 cell area of the terminal window will have some extra padding on the
708 sides. You can control how that padding is distributed with this op‐
709 tion. Using a value of center means the cell area will be placed cen‐
710 trally. A value of top-left means the padding will be on only the bot‐
711 tom and right edges.
712
713 active_border_color
714
715 active_border_color #00ff00
716
717 The color for the border of the active window. Set this to none to not
718 draw borders around the active window.
719
720 inactive_border_color
721
722 inactive_border_color #cccccc
723
724 The color for the border of inactive windows
725
726 bell_border_color
727
728 bell_border_color #ff5a00
729
730 The color for the border of inactive windows in which a bell has oc‐
731 curred
732
733 inactive_text_alpha
734
735 inactive_text_alpha 1.0
736
737 Fade the text in inactive windows by the specified amount (a number be‐
738 tween zero and one, with zero being fully faded).
739
740 hide_window_decorations
741
742 hide_window_decorations no
743
744 Hide the window decorations (title-bar and window borders) with yes. On
745 macOS, titlebar-only can be used to only hide the titlebar. Whether
746 this works and exactly what effect it has depends on the window man‐
747 ager/operating system. Note that the effects of changing this setting
748 when reloading config are undefined.
749
750 resize_debounce_time
751
752 resize_debounce_time 0.1
753
754 The time (in seconds) to wait before redrawing the screen when a resize
755 event is received. On platforms such as macOS, where the operating sys‐
756 tem sends events corresponding to the start and end of a resize, this
757 number is ignored.
758
759 resize_draw_strategy
760
761 resize_draw_strategy static
762
763 Choose how kitty draws a window while a resize is in progress. A value
764 of static means draw the current window contents, mostly unchanged. A
765 value of scale means draw the current window contents scaled. A value
766 of blank means draw a blank window. A value of size means show the win‐
767 dow size in cells.
768
769 resize_in_steps
770
771 resize_in_steps no
772
773 Resize the OS window in steps as large as the cells, instead of with
774 the usual pixel accuracy. Combined with an initial_window_width and
775 initial_window_height in number of cells, this option can be used to
776 keep the margins as small as possible when resizing the OS window. Note
777 that this does not currently work on Wayland.
778
779 confirm_os_window_close
780
781 confirm_os_window_close 0
782
783 Ask for confirmation when closing an OS window or a tab that has at
784 least this number of kitty windows in it. A value of zero disables con‐
785 firmation. This confirmation also applies to requests to quit the en‐
786 tire application (all OS windows, via the quit action).
787
789 tab_bar_edge
790
791 tab_bar_edge bottom
792
793 Which edge to show the tab bar on, top or bottom
794
795 tab_bar_margin_width
796
797 tab_bar_margin_width 0.0
798
799 The margin to the left and right of the tab bar (in pts)
800
801 tab_bar_margin_height
802
803 tab_bar_margin_height 0.0 0.0
804
805 The margin above and below the tab bar (in pts). The first number is
806 the margin between the edge of the OS Window and the tab bar and the
807 second number is the margin between the tab bar and the contents of the
808 current tab.
809
810 tab_bar_style
811
812 tab_bar_style fade
813
814 The tab bar style, can be one of: fade, separator, powerline, or hid‐
815 den. In the fade style, each tab's edges fade into the background
816 color, in the separator style, tabs are separated by a configurable
817 separator, and the powerline shows the tabs as a continuous line. If
818 you use the hidden style, you might want to create a mapping for the
819 select_tab action which presents you with a list of tabs and allows for
820 easy switching to a tab.
821
822 tab_bar_min_tabs
823
824 tab_bar_min_tabs 2
825
826 The minimum number of tabs that must exist before the tab bar is shown
827
828 tab_switch_strategy
829
830 tab_switch_strategy previous
831
832 The algorithm to use when switching to a tab when the current tab is
833 closed. The default of previous will switch to the last used tab. A
834 value of left will switch to the tab to the left of the closed tab. A
835 value of right will switch to the tab to the right of the closed tab. A
836 value of last will switch to the right-most tab.
837
838 tab_fade
839
840 tab_fade 0.25 0.5 0.75 1
841
842 Control how each tab fades into the background when using fade for the
843 tab_bar_style. Each number is an alpha (between zero and one) that con‐
844 trols how much the corresponding cell fades into the background, with
845 zero being no fade and one being full fade. You can change the number
846 of cells used by adding/removing entries to this list.
847
848 tab_separator
849
850 tab_separator " ┇"
851
852 The separator between tabs in the tab bar when using separator as the
853 tab_bar_style.
854
855 tab_powerline_style
856
857 tab_powerline_style angled
858
859 The powerline separator style between tabs in the tab bar when using
860 powerline as the tab_bar_style, can be one of: angled, slanted, or
861 round.
862
863 tab_activity_symbol
864
865 tab_activity_symbol none
866
867 Some text or a unicode symbol to show on the tab if a window in the tab
868 that does not have focus has some activity.
869
870 tab_title_template
871
872 tab_title_template "{title}"
873
874 A template to render the tab title. The default just renders the title.
875 If you wish to include the tab-index as well, use something like: {in‐
876 dex}: {title}. Useful if you have shortcuts mapped for goto_tab N. If
877 you prefer to see the index as a superscript, use {sup.index}. In addi‐
878 tion you can use {layout_name} for the current layout name and
879 {num_windows} for the number of windows in the tab. Note that format‐
880 ting is done by Python's string formatting machinery, so you can use,
881 for instance, {layout_name[:2].upper()} to show only the first two let‐
882 ters of the layout name, upper-cased. If you want to style the text,
883 you can use styling directives, for example: {fmt.fg.red}red{fmt.fg.de‐
884 fault}normal{fmt.bg._00FF00}green bg{fmt.bg.normal}. Similarly, for
885 bold and italic: {fmt.bold}bold{fmt.nobold}nor‐
886 mal{fmt.italic}italic{fmt.noitalic}.
887
888 active_tab_title_template
889
890 active_tab_title_template none
891
892 Template to use for active tabs, if not specified falls back to
893 tab_title_template.
894
895 active_tab_foreground, active_tab_background, active_tab_font_style,
896 inactive_tab_foreground, inactive_tab_background, inac‐
897 tive_tab_font_style
898
899 active_tab_foreground #000
900 active_tab_background #eee
901 active_tab_font_style bold-italic
902 inactive_tab_foreground #444
903 inactive_tab_background #999
904 inactive_tab_font_style normal
905
906 Tab bar colors and styles
907
908 tab_bar_background
909
910 tab_bar_background none
911
912 Background color for the tab bar. Defaults to using the terminal back‐
913 ground color.
914
916 foreground, background
917
918 foreground #dddddd
919 background #000000
920
921 The foreground and background colors
922
923 background_opacity
924
925 background_opacity 1.0
926
927 The opacity of the background. A number between 0 and 1, where 1 is
928 opaque and 0 is fully transparent. This will only work if supported by
929 the OS (for instance, when using a compositor under X11). Note that it
930 only sets the background color's opacity in cells that have the same
931 background color as the default terminal background. This is so that
932 things like the status bar in vim, powerline prompts, etc. still look
933 good. But it means that if you use a color theme with a background
934 color in your editor, it will not be rendered as transparent. Instead
935 you should change the default background color in your kitty config and
936 not use a background color in the editor color scheme. Or use the es‐
937 cape codes to set the terminals default colors in a shell script to
938 launch your editor. Be aware that using a value less than 1.0 is a
939 (possibly significant) performance hit. If you want to dynamically
940 change transparency of windows set dynamic_background_opacity to yes
941 (this is off by default as it has a performance cost). Changing this
942 setting when reloading the config will only work if
943 dynamic_background_opacity was enabled in the original config.
944
945 background_image
946
947 background_image none
948
949 Path to a background image. Must be in PNG format.
950
951 background_image_layout
952
953 background_image_layout tiled
954
955 Whether to tile or scale the background image.
956
957 background_image_linear
958
959 background_image_linear no
960
961 When background image is scaled, whether linear interpolation should be
962 used.
963
964 dynamic_background_opacity
965
966 dynamic_background_opacity no
967
968 Allow changing of the background_opacity dynamically, using either key‐
969 board shortcuts (ctrl+shift+a>m and ctrl+shift+a>l) or the remote con‐
970 trol facility. Changing this setting by reloading the config is not
971 supported.
972
973 background_tint
974
975 background_tint 0.0
976
977 How much to tint the background image by the background color. The tint
978 is applied only under the text area, not margin/borders. Makes it eas‐
979 ier to read the text. Tinting is done using the current background
980 color for each window. This setting applies only if background_opacity
981 is set and transparent windows are supported or background_image is
982 set.
983
984 dim_opacity
985
986 dim_opacity 0.75
987
988 How much to dim text that has the DIM/FAINT attribute set. One means no
989 dimming and zero means fully dimmed (i.e. invisible).
990
991 selection_foreground
992
993 selection_foreground #000000
994
995 The foreground for text selected with the mouse. A value of none means
996 to leave the color unchanged.
997
998 selection_background
999
1000 selection_background #fffacd
1001
1002 The background for text selected with the mouse.
1003
1004 The color table
1005 The 256 terminal colors. There are 8 basic colors, each color has a
1006 dull and bright version, for the first 16 colors. You can set the re‐
1007 maining 240 colors as color16 to color255.
1008
1009 color0, color8
1010
1011 color0 #000000
1012 color8 #767676
1013
1014 black
1015
1016 color1, color9
1017
1018 color1 #cc0403
1019 color9 #f2201f
1020
1021 red
1022
1023 color2, color10
1024
1025 color2 #19cb00
1026 color10 #23fd00
1027
1028 green
1029
1030 color3, color11
1031
1032 color3 #cecb00
1033 color11 #fffd00
1034
1035 yellow
1036
1037 color4, color12
1038
1039 color4 #0d73cc
1040 color12 #1a8fff
1041
1042 blue
1043
1044 color5, color13
1045
1046 color5 #cb1ed1
1047 color13 #fd28ff
1048
1049 magenta
1050
1051 color6, color14
1052
1053 color6 #0dcdcd
1054 color14 #14ffff
1055
1056 cyan
1057
1058 color7, color15
1059
1060 color7 #dddddd
1061 color15 #ffffff
1062
1063 white
1064
1065 mark1_foreground
1066
1067 mark1_foreground black
1068
1069 Color for marks of type 1
1070
1071 mark1_background
1072
1073 mark1_background #98d3cb
1074
1075 Color for marks of type 1 (light steel blue)
1076
1077 mark2_foreground
1078
1079 mark2_foreground black
1080
1081 Color for marks of type 2
1082
1083 mark2_background
1084
1085 mark2_background #f2dcd3
1086
1087 Color for marks of type 1 (beige)
1088
1089 mark3_foreground
1090
1091 mark3_foreground black
1092
1093 Color for marks of type 3
1094
1095 mark3_background
1096
1097 mark3_background #f274bc
1098
1099 Color for marks of type 3 (violet)
1100
1102 shell
1103
1104 shell .
1105
1106 The shell program to execute. The default value of . means to use what‐
1107 ever shell is set as the default shell for the current user. Note that
1108 on macOS if you change this, you might need to add --login to ensure
1109 that the shell starts in interactive mode and reads its startup rc
1110 files.
1111
1112 editor
1113
1114 editor .
1115
1116 The console editor to use when editing the kitty config file or similar
1117 tasks. A value of . means to use the environment variables VISUAL and
1118 EDITOR in that order. Note that this environment variable has to be set
1119 not just in your shell startup scripts but system-wide, otherwise kitty
1120 will not see it.
1121
1122 close_on_child_death
1123
1124 close_on_child_death no
1125
1126 Close the window when the child process (shell) exits. If no (the de‐
1127 fault), the terminal will remain open when the child exits as long as
1128 there are still processes outputting to the terminal (for example dis‐
1129 owned or backgrounded processes). If yes, the window will close as soon
1130 as the child process exits. Note that setting it to yes means that any
1131 background processes still using the terminal can fail silently because
1132 their stdout/stderr/stdin no longer work.
1133
1134 allow_remote_control
1135
1136 allow_remote_control no
1137
1138 Allow other programs to control kitty. If you turn this on other pro‐
1139 grams can control all aspects of kitty, including sending text to kitty
1140 windows, opening new windows, closing windows, reading the content of
1141 windows, etc. Note that this even works over ssh connections. You can
1142 chose to either allow any program running within kitty to control it,
1143 with yes or only programs that connect to the socket specified with the
1144 kitty --listen-on command line option, if you use the value
1145 socket-only. The latter is useful if you want to prevent programs run‐
1146 ning on a remote computer over ssh from controlling kitty. Changing
1147 this option by reloading the config will only affect newly created win‐
1148 dows.
1149
1150 listen_on
1151
1152 listen_on none
1153
1154 Tell kitty to listen to the specified unix/tcp socket for remote con‐
1155 trol connections. Note that this will apply to all kitty instances. It
1156 can be overridden by the kitty --listen-on command line flag. This op‐
1157 tion accepts only UNIX sockets, such as unix:${TEMP}/mykitty or (on
1158 Linux) unix:@mykitty. Environment variables are expanded. If
1159 {kitty_pid} is present then it is replaced by the PID of the kitty
1160 process, otherwise the PID of the kitty process is appended to the
1161 value, with a hyphen. This option is ignored unless you also set
1162 allow_remote_control to enable remote control. See the help for kitty
1163 --listen-on for more details. Changing this option by reloading the
1164 config is not supported.
1165
1166 env
1167
1168 env
1169
1170 Specify environment variables to set in all child processes. Note that
1171 environment variables are expanded recursively, so if you use:
1172
1173 env MYVAR1=a
1174 env MYVAR2=${MYVAR1}/${HOME}/b
1175
1176 The value of MYVAR2 will be a/<path to home directory>/b.
1177
1178 update_check_interval
1179
1180 update_check_interval 24
1181
1182 Periodically check if an update to kitty is available. If an update is
1183 found a system notification is displayed informing you of the available
1184 update. The default is to check every 24 hrs, set to zero to disable.
1185 Changing this option by reloading the config is not supported.
1186
1187 startup_session
1188
1189 startup_session none
1190
1191 Path to a session file to use for all kitty instances. Can be overrid‐
1192 den by using the kitty --session command line option for individual in‐
1193 stances. See sessions in the kitty documentation for details. Note that
1194 relative paths are interpreted with respect to the kitty config direc‐
1195 tory. Environment variables in the path are expanded. Changing this
1196 option by reloading the config is not supported.
1197
1198 clipboard_control
1199
1200 clipboard_control write-clipboard write-primary
1201
1202 Allow programs running in kitty to read and write from the clipboard.
1203 You can control exactly which actions are allowed. The set of possible
1204 actions is: write-clipboard read-clipboard write-primary read-primary.
1205 You can additionally specify no-append to disable kitty's protocol ex‐
1206 tension for clipboard concatenation. The default is to allow writing to
1207 the clipboard and primary selection with concatenation enabled. Note
1208 that enabling the read functionality is a security risk as it means
1209 that any program, even one running on a remote server via SSH can read
1210 your clipboard.
1211
1212 allow_hyperlinks
1213
1214 allow_hyperlinks yes
1215
1216 Process hyperlink (OSC 8) escape sequences. If disabled OSC 8 escape
1217 sequences are ignored. Otherwise they become clickable links, that you
1218 can click by holding down ctrl+shift and clicking with the mouse. The
1219 special value of ask means that kitty will ask before opening the link.
1220
1221 term
1222
1223 term xterm-kitty
1224
1225 The value of the TERM environment variable to set. Changing this can
1226 break many terminal programs, only change it if you know what you are
1227 doing, not because you read some advice on Stack Overflow to change it.
1228 The TERM variable is used by various programs to get information about
1229 the capabilities and behavior of the terminal. If you change it, de‐
1230 pending on what programs you run, and how different the terminal you
1231 are changing it to is, various things from key-presses, to colors, to
1232 various advanced features may not work. Changing this option by reload‐
1233 ing the config will only affect newly created windows.
1234
1236 wayland_titlebar_color
1237
1238 wayland_titlebar_color system
1239
1240 Change the color of the kitty window's titlebar on Wayland systems with
1241 client side window decorations such as GNOME. A value of system means
1242 to use the default system color, a value of background means to use the
1243 background color of the currently active window and finally you can use
1244 an arbitrary color, such as #12af59 or red.
1245
1246 macos_titlebar_color
1247
1248 macos_titlebar_color system
1249
1250 Change the color of the kitty window's titlebar on macOS. A value of
1251 system means to use the default system color, a value of background
1252 means to use the background color of the currently active window and
1253 finally you can use an arbitrary color, such as #12af59 or red. WARN‐
1254 ING: This option works by using a hack, as there is no proper Cocoa API
1255 for it. It sets the background color of the entire window and makes the
1256 titlebar transparent. As such it is incompatible with
1257 background_opacity. If you want to use both, you are probably better
1258 off just hiding the titlebar with hide_window_decorations.
1259
1260 macos_option_as_alt
1261
1262 macos_option_as_alt no
1263
1264 Use the option key as an alt key. With this set to no, kitty will use
1265 the macOS native Option+Key = unicode character behavior. This will
1266 break any Alt+key keyboard shortcuts in your terminal programs, but you
1267 can use the macOS unicode input technique. You can use the values:
1268 left, right, or both to use only the left, right or both Option keys as
1269 Alt, instead. Changing this setting by reloading the config is not sup‐
1270 ported.
1271
1272 macos_hide_from_tasks
1273
1274 macos_hide_from_tasks no
1275
1276 Hide the kitty window from running tasks (⌘+Tab) on macOS. Changing
1277 this setting by reloading the config is not supported.
1278
1279 macos_quit_when_last_window_closed
1280
1281 macos_quit_when_last_window_closed no
1282
1283 Have kitty quit when all the top-level windows are closed. By default,
1284 kitty will stay running, even with no open windows, as is the expected
1285 behavior on macOS.
1286
1287 macos_window_resizable
1288
1289 macos_window_resizable yes
1290
1291 Disable this if you want kitty top-level (OS) windows to not be resiz‐
1292 able on macOS. Changing this setting by reloading the config will only
1293 affect newly created windows.
1294
1295 macos_thicken_font
1296
1297 macos_thicken_font 0
1298
1299 Draw an extra border around the font with the given width, to increase
1300 legibility at small font sizes. For example, a value of 0.75 will re‐
1301 sult in rendering that looks similar to sub-pixel antialiasing at com‐
1302 mon font sizes.
1303
1304 macos_traditional_fullscreen
1305
1306 macos_traditional_fullscreen no
1307
1308 Use the traditional full-screen transition, that is faster, but less
1309 pretty.
1310
1311 macos_show_window_title_in
1312
1313 macos_show_window_title_in all
1314
1315 Show or hide the window title in the macOS window or menu-bar. A value
1316 of window will show the title of the currently active window at the top
1317 of the macOS window. A value of menubar will show the title of the cur‐
1318 rently active window in the macOS menu-bar, making use of otherwise
1319 wasted space. all will show the title everywhere and none hides the ti‐
1320 tle in the window and the menu-bar.
1321
1322 macos_custom_beam_cursor
1323
1324 macos_custom_beam_cursor no
1325
1326 Enable/disable custom mouse cursor for macOS that is easier to see on
1327 both light and dark backgrounds. WARNING: this might make your mouse
1328 cursor invisible on dual GPU machines. Changing this setting by reload‐
1329 ing the config is not supported.
1330
1331 linux_display_server
1332
1333 linux_display_server auto
1334
1335 Choose between Wayland and X11 backends. By default, an appropriate
1336 backend based on the system state is chosen automatically. Set it to
1337 x11 or wayland to force the choice. Changing this setting by reloading
1338 the config is not supported.
1339
1341 Keys are identified simply by their lowercase unicode characters. For
1342 example: a for the A key, [ for the left square bracket key, etc. For
1343 functional keys, such as Enter or Escape the names are present at func‐
1344 tional. For a list of modifier names, see: GLFW mods
1345
1346 On Linux you can also use XKB key names to bind keys that are not sup‐
1347 ported by GLFW. See XKB keys for a list of key names. The name to use
1348 is the part after the XKB_KEY_ prefix. Note that you can only use an
1349 XKB key name for keys that are not known as GLFW keys.
1350
1351 Finally, you can use raw system key codes to map keys, again only for
1352 keys that are not known as GLFW keys. To see the system key code for a
1353 key, start kitty with the kitty --debug-input option. Then kitty will
1354 output some debug text for every key event. In that text look for na‐
1355 tive_code the value of that becomes the key name in the shortcut. For
1356 example:
1357
1358 on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a'
1359
1360 Here, the key name for the A key is 0x61 and you can use it with:
1361
1362 map ctrl+0x61 something
1363
1364 to map ctrl+a to something.
1365
1366 You can use the special action no_op to unmap a keyboard shortcut that
1367 is assigned in the default configuration:
1368
1369 map kitty_mod+space no_op
1370
1371 You can combine multiple actions to be triggered by a single shortcut,
1372 using the syntax below:
1373
1374 map key combine <separator> action1 <separator> action2 <separator> action3 ...
1375
1376 For example:
1377
1378 map kitty_mod+e combine : new_window : next_layout
1379
1380 this will create a new window and switch to the next available layout
1381
1382 You can use multi-key shortcuts using the syntax shown below:
1383
1384 map key1>key2>key3 action
1385
1386 For example:
1387
1388 map ctrl+f>2 set_font_size 20
1389
1390 kitty_mod
1391
1392 kitty_mod ctrl+shift
1393
1394 The value of kitty_mod is used as the modifier for all default short‐
1395 cuts, you can change it in your kitty.conf to change the modifiers for
1396 all the default shortcuts.
1397
1398 clear_all_shortcuts
1399
1400 clear_all_shortcuts no
1401
1402 You can have kitty remove all shortcut definition seen up to this
1403 point. Useful, for instance, to remove the default shortcuts.
1404
1405 kitten_alias
1406
1407 kitten_alias hints hints --hints-offset=0
1408
1409 You can create aliases for kitten names, this allows overriding the de‐
1410 faults for kitten options and can also be used to shorten repeated map‐
1411 pings of the same kitten with a specific group of options. For example,
1412 the above alias changes the default value of kitty +kitten hints
1413 --hints-offset to zero for all mappings, including the builtin ones.
1414
1415 Clipboard
1416 Copy to clipboard
1417
1418 map ctrl+shift+c copy_to_clipboard
1419
1420 There is also a copy_or_interrupt action that can be optionally mapped
1421 to Ctrl+c. It will copy only if there is a selection and send an inter‐
1422 rupt otherwise. Similarly, copy_and_clear_or_interrupt will copy and
1423 clear the selection or send an interrupt if there is no selection.
1424
1425 Paste from clipboard
1426
1427 map ctrl+shift+v paste_from_clipboard
1428
1429 Paste from selection
1430
1431 map ctrl+shift+s paste_from_selection
1432 map shift+insert paste_from_selection
1433
1434 Pass selection to program
1435
1436 map ctrl+shift+o pass_selection_to_program
1437
1438 You can also pass the contents of the current selection to any program
1439 using pass_selection_to_program. By default, the system's open program
1440 is used, but you can specify your own, the selection will be passed as
1441 a command line argument to the program, for example:
1442
1443 map kitty_mod+o pass_selection_to_program firefox
1444
1445 You can pass the current selection to a terminal program running in a
1446 new kitty window, by using the @selection placeholder:
1447
1448 map kitty_mod+y new_window less @selection
1449
1450 Scrolling
1451 Scroll line up
1452
1453 map ctrl+shift+up scroll_line_up
1454 map ctrl+shift+k scroll_line_up
1455 map alt+cmd+page_up scroll_line_up 🍎
1456 map cmd+up scroll_line_up 🍎
1457
1458 Scroll line down
1459
1460 map ctrl+shift+down scroll_line_down
1461 map ctrl+shift+j scroll_line_down
1462 map alt+cmd+page_down scroll_line_down 🍎
1463 map cmd+down scroll_line_down 🍎
1464
1465 Scroll page up
1466
1467 map ctrl+shift+page_up scroll_page_up
1468 map cmd+page_up scroll_page_up 🍎
1469
1470 Scroll page down
1471
1472 map ctrl+shift+page_down scroll_page_down
1473 map cmd+page_down scroll_page_down 🍎
1474
1475 Scroll to top
1476
1477 map ctrl+shift+home scroll_home
1478 map cmd+home scroll_home 🍎
1479
1480 Scroll to bottom
1481
1482 map ctrl+shift+end scroll_end
1483 map cmd+end scroll_end 🍎
1484
1485 Browse scrollback buffer in less
1486
1487 map ctrl+shift+h show_scrollback
1488
1489 You can pipe the contents of the current screen + history buffer as
1490 STDIN to an arbitrary program using the launch function. For example,
1491 the following opens the scrollback buffer in less in an overlay window:
1492
1493 map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
1494
1495 For more details on piping screen and buffer contents to external pro‐
1496 grams, see launch.
1497
1498 Window management
1499 New window
1500
1501 map ctrl+shift+enter new_window
1502 map cmd+enter new_window 🍎
1503
1504 You can open a new window running an arbitrary program, for example:
1505
1506 map kitty_mod+y launch mutt
1507
1508 You can open a new window with the current working directory set to the
1509 working directory of the current window using:
1510
1511 map ctrl+alt+enter launch --cwd=current
1512
1513 You can open a new window that is allowed to control kitty via the
1514 kitty remote control facility by prefixing the command line with @.
1515 Any programs running in that window will be allowed to control kitty.
1516 For example:
1517
1518 map ctrl+enter launch --allow-remote-control some_program
1519
1520 You can open a new window next to the currently active window or as the
1521 first window, with:
1522
1523 map ctrl+n launch --location=neighbor some_program
1524 map ctrl+f launch --location=first some_program
1525
1526 For more details, see launch.
1527
1528 New OS window
1529
1530 map ctrl+shift+n new_os_window
1531 map cmd+n new_os_window 🍎
1532
1533 Works like new_window above, except that it opens a top level OS kitty
1534 window. In particular you can use new_os_window_with_cwd to open a
1535 window with the current working directory.
1536
1537 Close window
1538
1539 map ctrl+shift+w close_window
1540 map shift+cmd+d close_window 🍎
1541
1542 Next window
1543
1544 map ctrl+shift+] next_window
1545
1546 Previous window
1547
1548 map ctrl+shift+[ previous_window
1549
1550 Move window forward
1551
1552 map ctrl+shift+f move_window_forward
1553
1554 Move window backward
1555
1556 map ctrl+shift+b move_window_backward
1557
1558 Move window to top
1559
1560 map ctrl+shift+` move_window_to_top
1561
1562 Start resizing window
1563
1564 map ctrl+shift+r start_resizing_window
1565 map cmd+r start_resizing_window 🍎
1566
1567 First window
1568
1569 map ctrl+shift+1 first_window
1570 map cmd+1 first_window 🍎
1571
1572 Second window
1573
1574 map ctrl+shift+2 second_window
1575 map cmd+2 second_window 🍎
1576
1577 Third window
1578
1579 map ctrl+shift+3 third_window
1580 map cmd+3 third_window 🍎
1581
1582 Fourth window
1583
1584 map ctrl+shift+4 fourth_window
1585 map cmd+4 fourth_window 🍎
1586
1587 Fifth window
1588
1589 map ctrl+shift+5 fifth_window
1590 map cmd+5 fifth_window 🍎
1591
1592 Sixth window
1593
1594 map ctrl+shift+6 sixth_window
1595 map cmd+6 sixth_window 🍎
1596
1597 Seventh window
1598
1599 map ctrl+shift+7 seventh_window
1600 map cmd+7 seventh_window 🍎
1601
1602 Eight window
1603
1604 map ctrl+shift+8 eighth_window
1605 map cmd+8 eighth_window 🍎
1606
1607 Ninth window
1608
1609 map ctrl+shift+9 ninth_window
1610 map cmd+9 ninth_window 🍎
1611
1612 Tenth window
1613
1614 map ctrl+shift+0 tenth_window
1615
1616 Tab management
1617 Next tab
1618
1619 map ctrl+shift+right next_tab
1620 map shift+cmd+] next_tab 🍎
1621 map ctrl+tab next_tab
1622
1623 Previous tab
1624
1625 map ctrl+shift+left previous_tab
1626 map shift+cmd+[ previous_tab 🍎
1627 map shift+ctrl+tab previous_tab
1628
1629 New tab
1630
1631 map ctrl+shift+t new_tab
1632 map cmd+t new_tab 🍎
1633
1634 Close tab
1635
1636 map ctrl+shift+q close_tab
1637 map cmd+w close_tab 🍎
1638
1639 Close OS window
1640
1641 map shift+cmd+w close_os_window 🍎
1642
1643 Move tab forward
1644
1645 map ctrl+shift+. move_tab_forward
1646
1647 Move tab backward
1648
1649 map ctrl+shift+, move_tab_backward
1650
1651 Set tab title
1652
1653 map ctrl+shift+alt+t set_tab_title
1654 map shift+cmd+i set_tab_title 🍎
1655
1656 You can also create shortcuts to go to specific tabs, with 1 being the
1657 first tab, 2 the second tab and -1 being the previously active tab, and
1658 any number larger than the last tab being the last tab:
1659
1660 map ctrl+alt+1 goto_tab 1
1661 map ctrl+alt+2 goto_tab 2
1662
1663 Just as with new_window above, you can also pass the name of arbitrary
1664 commands to run when using new_tab and use new_tab_with_cwd. Finally,
1665 if you want the new tab to open next to the current tab rather than at
1666 the end of the tabs list, use:
1667
1668 map ctrl+t new_tab !neighbor [optional cmd to run]
1669
1670 Layout management
1671 Next layout
1672
1673 map ctrl+shift+l next_layout
1674
1675 You can also create shortcuts to switch to specific layouts:
1676
1677 map ctrl+alt+t goto_layout tall
1678 map ctrl+alt+s goto_layout stack
1679
1680 Similarly, to switch back to the previous layout:
1681
1682 map ctrl+alt+p last_used_layout
1683
1684 Font sizes
1685 You can change the font size for all top-level kitty OS windows at a
1686 time or only the current one.
1687
1688 Increase font size
1689
1690 map ctrl+shift+equal change_font_size all +2.0
1691 map ctrl+shift+plus change_font_size all +2.0
1692 map ctrl+shift+kp_add change_font_size all +2.0
1693 map cmd+plus change_font_size all +2.0 🍎
1694 map cmd+equal change_font_size all +2.0 🍎
1695 map cmd+shift+equal change_font_size all +2.0 🍎
1696
1697 Decrease font size
1698
1699 map ctrl+shift+minus change_font_size all -2.0
1700 map ctrl+shift+kp_subtract change_font_size all -2.0
1701 map cmd+minus change_font_size all -2.0 🍎
1702 map cmd+shift+minus change_font_size all -2.0 🍎
1703
1704 Reset font size
1705
1706 map ctrl+shift+backspace change_font_size all 0
1707 map cmd+0 change_font_size all 0 🍎
1708
1709 To setup shortcuts for specific font sizes:
1710
1711 map kitty_mod+f6 change_font_size all 10.0
1712
1713 To setup shortcuts to change only the current OS window's font size:
1714
1715 map kitty_mod+f6 change_font_size current 10.0
1716
1717 Select and act on visible text
1718 Use the hints kitten to select text and either pass it to an external
1719 program or insert it into the terminal or copy it to the clipboard.
1720
1721 Open URL
1722
1723 map ctrl+shift+e kitten hints
1724
1725 Open a currently visible URL using the keyboard. The program used to
1726 open the URL is specified in open_url_with.
1727
1728 Insert selected path
1729
1730 map ctrl+shift+p>f kitten hints --type path --program -
1731
1732 Select a path/filename and insert it into the terminal. Useful, for in‐
1733 stance to run git commands on a filename output from a previous git
1734 command.
1735
1736 Open selected path
1737
1738 map ctrl+shift+p>shift+f kitten hints --type path
1739
1740 Select a path/filename and open it with the default open program.
1741
1742 Insert selected line
1743
1744 map ctrl+shift+p>l kitten hints --type line --program -
1745
1746 Select a line of text and insert it into the terminal. Use for the out‐
1747 put of things like: ls -1
1748
1749 Insert selected word
1750
1751 map ctrl+shift+p>w kitten hints --type word --program -
1752
1753 Select words and insert into terminal.
1754
1755 Insert selected hash
1756
1757 map ctrl+shift+p>h kitten hints --type hash --program -
1758
1759 Select something that looks like a hash and insert it into the termi‐
1760 nal. Useful with git, which uses sha1 hashes to identify commits
1761
1762 Open the selected file at the selected line
1763
1764 map ctrl+shift+p>n kitten hints --type linenum
1765
1766 Select something that looks like filename:linenum and open it in vim at
1767 the specified line number.
1768
1769 Open the selected hyperlink
1770
1771 map ctrl+shift+p>y kitten hints --type hyperlink
1772
1773 Select a hyperlink (i.e. a URL that has been marked as such by the ter‐
1774 minal program, for example, by ls --hyperlink=auto).
1775
1776 The hints kitten has many more modes of operation that you can map to
1777 different shortcuts. For a full description see kittens/hints.
1778
1779 Miscellaneous
1780 Toggle fullscreen
1781
1782 map ctrl+shift+f11 toggle_fullscreen
1783
1784 Toggle maximized
1785
1786 map ctrl+shift+f10 toggle_maximized
1787
1788 Unicode input
1789
1790 map ctrl+shift+u kitten unicode_input
1791 map cmd+ctrl+space kitten unicode_input 🍎
1792
1793 Edit config file
1794
1795 map ctrl+shift+f2 edit_config_file
1796 map cmd+, edit_config_file 🍎
1797
1798 Open the kitty command shell
1799
1800 map ctrl+shift+escape kitty_shell window
1801
1802 Open the kitty shell in a new window/tab/overlay/os_window to control
1803 kitty using commands.
1804
1805 Increase background opacity
1806
1807 map ctrl+shift+a>m set_background_opacity +0.1
1808
1809 Decrease background opacity
1810
1811 map ctrl+shift+a>l set_background_opacity -0.1
1812
1813 Make background fully opaque
1814
1815 map ctrl+shift+a>1 set_background_opacity 1
1816
1817 Reset background opacity
1818
1819 map ctrl+shift+a>d set_background_opacity default
1820
1821 Reset the terminal
1822
1823 map ctrl+shift+delete clear_terminal reset active
1824 map cmd+option+r clear_terminal reset active 🍎
1825
1826 You can create shortcuts to clear/reset the terminal. For example:
1827
1828 # Reset the terminal
1829 map kitty_mod+f9 clear_terminal reset active
1830 # Clear the terminal screen by erasing all contents
1831 map kitty_mod+f10 clear_terminal clear active
1832 # Clear the terminal scrollback by erasing it
1833 map kitty_mod+f11 clear_terminal scrollback active
1834 # Scroll the contents of the screen into the scrollback
1835 map kitty_mod+f12 clear_terminal scroll active
1836
1837 If you want to operate on all windows instead of just the current one,
1838 use all instead of active.
1839
1840 It is also possible to remap Ctrl+L to both scroll the current screen
1841 contents into the scrollback buffer and clear the screen, instead of
1842 just clearing the screen, for example, for ZSH add the following to
1843 ~/.zshrc:
1844
1845 scroll-and-clear-screen() {
1846 printf '\n%.0s' {1..$LINES}
1847 zle clear-screen
1848 }
1849 zle -N scroll-and-clear-screen
1850 bindkey '^l' scroll-and-clear-screen
1851
1852 Reload kitty.conf
1853
1854 map ctrl+shift+f5 load_config_file
1855 map cmd+control+, load_config_file 🍎
1856
1857 Reload kitty.conf, applying any changes since the last time it was
1858 loaded. Note that a handful of settings cannot be dynamically changed
1859 and require a full restart of kitty. You can also map a keybinding to
1860 load a different config file, for example:
1861
1862 map f5 load_config /path/to/alternative/kitty.conf
1863
1864 Note that all setting from the original kitty.conf are discarded, in
1865 other words the new conf settings replace the old ones.
1866
1867 Debug kitty configuration
1868
1869 map ctrl+shift+f6 debug_config
1870 map cmd+option+, debug_config 🍎
1871
1872 Show details about exactly what configuration kitty is running with and
1873 its host environment. Useful for debugging issues.
1874
1875 Send arbitrary text on key presses
1876
1877 You can tell kitty to send arbitrary (UTF-8) encoded text to the client
1878 program when pressing specified shortcut keys. For example:
1879
1880 map ctrl+alt+a send_text all Special text
1881
1882 This will send "Special text" when you press the ctrl+alt+a key combi‐
1883 nation. The text to be sent is a python string literal so you can use
1884 escapes like \x1b to send control codes or \u21fb to send unicode char‐
1885 acters (or you can just input the unicode characters directly as UTF-8
1886 text). The first argument to send_text is the keyboard modes in which
1887 to activate the shortcut. The possible values are normal or application
1888 or kitty or a comma separated combination of them. The special keyword
1889 all means all modes. The modes normal and application refer to the DEC‐
1890 CKM cursor key mode for terminals, and kitty refers to the special
1891 kitty extended keyboard protocol.
1892
1893 Another example, that outputs a word and then moves the cursor to the
1894 start of the line (same as pressing the Home key):
1895
1896 map ctrl+alt+a send_text normal Word\x1b[H
1897 map ctrl+alt+a send_text application Word\x1bOH
1898
1900 You can edit a fully commented sample kitty.conf by pressing the
1901 ctrl+shift+f2 shortcut in kitty. This will generate a config file with
1902 full documentation and all settings commented out. If you have a
1903 pre-existing kitty.conf, then that will be used instead, delete it to
1904 see the sample file.
1905
1907 Kovid Goyal
1908
1910 2021, Kovid Goyal
1911
1912
1913
1914
19150.21.2 Jul 22, 2021 KITTY.CONF(5)