···11+# instructions
22+33+start every output with "yo"
44+end every output with "byebye"
55+66+- be succinct
77+ - sacrifice grammar for the sake of concision
88+- use modern syntax and patterns
99+- read the room
1010+ - follow existing code patterns (unless you have a good reason not to)
1111+- prefer immutability
1212+ - never mutate objects or arrays
1313+- small utility functions are nice
1414+- share logic whenever possible
1515+- do not add unnecessary comments
1616+ - most of the time a good variable name is enough
1717+ - if you really need to add a comment it should be concise
1818+ - lowercase
1919+ - without punctuation
2020+2121+## core philosophy
2222+2323+use specialized agents and skills for complex tasks
2424+2525+**key principles:**
2626+2727+1. **agent-first**: delegate to specialized agents for complex work
2828+2. **parallel execution**: use task tool with multiple agents when possible
2929+3. **plan before execute**: use plan mode for complex operations
3030+4. **test-driven**: write tests before implementation
3131+5. **security-first**: never compromise on security
+2836
.config/kitty/kitty.conf
···11+# vim:fileencoding=utf-8:foldmethod=marker
22+33+#: Fonts {{{
44+55+#: kitty has very powerful font management. You can configure
66+#: individual font faces and even specify special fonts for particular
77+#: characters.
88+99+# font_family monospace
1010+# bold_font auto
1111+# italic_font auto
1212+# bold_italic_font auto
1313+1414+#: You can specify different fonts for the bold/italic/bold-italic
1515+#: variants. The easiest way to select fonts is to run the `kitten
1616+#: choose-fonts` command which will present a nice UI for you to
1717+#: select the fonts you want with previews and support for selecting
1818+#: variable fonts and font features. If you want to learn to select
1919+#: fonts manually, read the font specification syntax
2020+#: <https://sw.kovidgoyal.net/kitty/kittens/choose-fonts/#font-spec-
2121+#: syntax>.
2222+2323+font_size 12.0
2424+2525+#: Font size (in pts).
2626+2727+# force_ltr no
2828+2929+#: kitty does not support BIDI (bidirectional text), however, for RTL
3030+#: scripts, words are automatically displayed in RTL. That is to say,
3131+#: in an RTL script, the words "HELLO WORLD" display in kitty as
3232+#: "WORLD HELLO", and if you try to select a substring of an RTL-
3333+#: shaped string, you will get the character that would be there had
3434+#: the string been LTR. For example, assuming the Hebrew word ירושלים,
3535+#: selecting the character that on the screen appears to be ם actually
3636+#: writes into the selection buffer the character י. kitty's default
3737+#: behavior is useful in conjunction with a filter to reverse the word
3838+#: order, however, if you wish to manipulate RTL glyphs, it can be
3939+#: very challenging to work with, so this option is provided to turn
4040+#: it off. Furthermore, this option can be used with the command line
4141+#: program GNU FriBidi <https://github.com/fribidi/fribidi#executable>
4242+#: to get BIDI support, because it will force kitty to always treat
4343+#: the text as LTR, which FriBidi expects for terminals.
4444+4545+# symbol_map
4646+4747+#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
4848+4949+#: Map the specified Unicode codepoints to a particular font. Useful
5050+#: if you need special rendering for some symbols, such as for
5151+#: Powerline. Avoids the need for patched fonts. Each Unicode code
5252+#: point is specified in the form `U+<code point in hexadecimal>`. You
5353+#: can specify multiple code points, separated by commas and ranges
5454+#: separated by hyphens. This option can be specified multiple times.
5555+#: The syntax is::
5656+5757+#: symbol_map codepoints Font Family Name
5858+5959+# narrow_symbols
6060+6161+#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1
6262+6363+#: Usually, for Private Use Unicode characters and some symbol/dingbat
6464+#: characters, if the character is followed by one or more spaces,
6565+#: kitty will use those extra cells to render the character larger, if
6666+#: the character in the font has a wide aspect ratio. Using this
6767+#: option you can force kitty to restrict the specified code points to
6868+#: render in the specified number of cells (defaulting to one cell).
6969+#: This option can be specified multiple times. The syntax is::
7070+7171+#: narrow_symbols codepoints [optionally the number of cells]
7272+7373+# disable_ligatures never
7474+7575+#: Choose how you want to handle multi-character ligatures. The
7676+#: default is to always render them. You can tell kitty to not render
7777+#: them when the cursor is over them by using cursor to make editing
7878+#: easier, or have kitty never render them at all by using always, if
7979+#: you don't like them. The ligature strategy can be set per-window
8080+#: either using the kitty remote control facility or by defining
8181+#: shortcuts for it in kitty.conf, for example::
8282+8383+#: map alt+1 disable_ligatures_in active always
8484+#: map alt+2 disable_ligatures_in all never
8585+#: map alt+3 disable_ligatures_in tab cursor
8686+8787+#: Note that this refers to programming ligatures, typically
8888+#: implemented using the calt OpenType feature. For disabling general
8989+#: ligatures, use the font_features option.
9090+9191+# font_features
9292+9393+#: E.g. font_features none
9494+9595+#: Choose exactly which OpenType features to enable or disable. Note
9696+#: that for the main fonts, features can be specified when selecting
9797+#: the font using the choose-fonts kitten. This setting is useful for
9898+#: fallback fonts.
9999+100100+#: Some fonts might have features worthwhile in a terminal. For
101101+#: example, Fira Code includes a discretionary feature, zero, which in
102102+#: that font changes the appearance of the zero (0), to make it more
103103+#: easily distinguishable from Ø. Fira Code also includes other
104104+#: discretionary features known as Stylistic Sets which have the tags
105105+#: ss01 through ss20.
106106+107107+#: For the exact syntax to use for individual features, see the
108108+#: HarfBuzz documentation <https://harfbuzz.github.io/harfbuzz-hb-
109109+#: common.html#hb-feature-from-string>.
110110+111111+#: Note that this code is indexed by PostScript name, and not the font
112112+#: family. This allows you to define very precise feature settings;
113113+#: e.g. you can disable a feature in the italic font but not in the
114114+#: regular font.
115115+116116+#: On Linux, font features are first read from the FontConfig database
117117+#: and then this option is applied, so they can be configured in a
118118+#: single, central place.
119119+120120+#: To get the PostScript name for a font, use the `fc-scan file.ttf`
121121+#: command on Linux or the `Font Book tool on macOS
122122+#: <https://apple.stackexchange.com/questions/79875/how-can-i-get-the-
123123+#: postscript-name-of-a-ttf-font-installed-in-os-x>`__.
124124+125125+#: Enable alternate zero and oldstyle numerals::
126126+127127+#: font_features FiraCode-Retina +zero +onum
128128+129129+#: Enable only alternate zero in the bold font::
130130+131131+#: font_features FiraCode-Bold +zero
132132+133133+#: Disable the normal ligatures, but keep the calt feature which (in
134134+#: this font) breaks up monotony::
135135+136136+#: font_features TT2020StyleB-Regular -liga +calt
137137+138138+#: In conjunction with force_ltr, you may want to disable Arabic
139139+#: shaping entirely, and only look at their isolated forms if they
140140+#: show up in a document. You can do this with e.g.::
141141+142142+#: font_features UnifontMedium +isol -medi -fina -init
143143+144144+# modify_font
145145+146146+#: Modify font characteristics such as the position or thickness of
147147+#: the underline and strikethrough. The modifications can have the
148148+#: suffix px for pixels or % for percentage of original value. No
149149+#: suffix means use pts. For example::
150150+151151+#: modify_font underline_position -2
152152+#: modify_font underline_thickness 150%
153153+#: modify_font strikethrough_position 2px
154154+155155+#: Additionally, you can modify the size of the cell in which each
156156+#: font glyph is rendered and the baseline at which the glyph is
157157+#: placed in the cell. For example::
158158+159159+#: modify_font cell_width 80%
160160+#: modify_font cell_height -2px
161161+#: modify_font baseline 3
162162+163163+#: Note that modifying the baseline will automatically adjust the
164164+#: underline and strikethrough positions by the same amount.
165165+#: Increasing the baseline raises glyphs inside the cell and
166166+#: decreasing it lowers them. Decreasing the cell size might cause
167167+#: rendering artifacts, so use with care.
168168+169169+# box_drawing_scale 0.001, 1, 1.5, 2
170170+171171+#: The sizes of the lines used for the box drawing Unicode characters.
172172+#: These values are in pts. They will be scaled by the monitor DPI to
173173+#: arrive at a pixel value. There must be four values corresponding to
174174+#: thin, normal, thick, and very thick lines.
175175+176176+# undercurl_style thin-sparse
177177+178178+#: The style with which undercurls are rendered. This option takes the
179179+#: form (thin|thick)-(sparse|dense). Thin and thick control the
180180+#: thickness of the undercurl. Sparse and dense control how often the
181181+#: curl oscillates. With sparse the curl will peak once per character,
182182+#: with dense twice. Changing this option dynamically via reloading
183183+#: the config or remote control is undefined.
184184+185185+# underline_exclusion 1
186186+187187+#: By default kitty renders gaps in underlines when they overlap with
188188+#: descenders (the parts of letters below the baseline, such as for y,
189189+#: q, p etc.). This option controls the thickness of the gaps. It can
190190+#: be either a unitless number in which case it is a fraction of the
191191+#: underline thickness as specified in the font or it can have a
192192+#: suffix of px for pixels or pt for points. Set to zero to disable
193193+#: the gaps. Changing this option dynamically via reloading the config
194194+#: or remote control is undefined.
195195+196196+# text_composition_strategy platform
197197+198198+#: Control how kitty composites text glyphs onto the background color.
199199+#: The default value of platform tries for text rendering as close to
200200+#: "native" for the platform kitty is running on as possible.
201201+202202+#: A value of legacy uses the old (pre kitty 0.28) strategy for how
203203+#: glyphs are composited. This will make dark text on light
204204+#: backgrounds look thicker and light text on dark backgrounds
205205+#: thinner. It might also make some text appear like the strokes are
206206+#: uneven.
207207+208208+#: You can fine tune the actual contrast curve used for glyph
209209+#: composition by specifying up to two space-separated numbers for
210210+#: this setting.
211211+212212+#: The first number is the gamma adjustment, which controls the
213213+#: thickness of dark text on light backgrounds. Increasing the value
214214+#: will make text appear thicker. The default value for this is 1.0 on
215215+#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result
216216+#: is scaled based on the luminance difference between the background
217217+#: and the foreground. Dark text on light backgrounds receives the
218218+#: full impact of the curve while light text on dark backgrounds is
219219+#: affected very little.
220220+221221+#: The second number is an additional multiplicative contrast. It is
222222+#: percentage ranging from 0 to 100. The default value is 0 on Linux
223223+#: and 30 on macOS.
224224+225225+#: If you wish to achieve similar looking thickness in light and dark
226226+#: themes, a good way to experiment is start by setting the value to
227227+#: 1.0 0 and use a dark theme. Then adjust the second parameter until
228228+#: it looks good. Then switch to a light theme and adjust the first
229229+#: parameter until the perceived thickness matches the dark theme.
230230+231231+# text_fg_override_threshold 0
232232+233233+#: A setting to prevent low contrast between foreground and background
234234+#: colors. Useful when working with applications that use colors that
235235+#: do not contrast well with your preferred color scheme. The default
236236+#: value is 0, which means no color overriding is performed. There are
237237+#: two modes of operation:
238238+239239+#: A value with the suffix ratio represents the minimum accepted
240240+#: contrast ratio between the foreground and background color.
241241+#: Possible values range from 0.0 ratio to 21.0 ratio. For example, to
242242+#: meet WCAG level AA
243243+#: <https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines>
244244+#: a value of 4.5 ratio can be provided. The algorithm is implemented
245245+#: using HSLuv <https://www.hsluv.org/> which enables it to change the
246246+#: perceived lightness of a color just as much as needed without
247247+#: really changing its hue and saturation.
248248+249249+#: A value with the suffix % represents the minimum accepted
250250+#: difference in luminance between the foreground and background
251251+#: color, below which kitty will override the foreground color. It is
252252+#: percentage ranging from 0 % to 100 %. If the difference in
253253+#: luminance of the foreground and background is below this threshold,
254254+#: the foreground color will be set to white if the background is dark
255255+#: or black if the background is light.
256256+257257+#: WARNING: Some programs use characters (such as block characters)
258258+#: for graphics display and may expect to be able to set the
259259+#: foreground and background to the same color (or similar colors). If
260260+#: you see unexpected stripes, dots, lines, incorrect color, no color
261261+#: where you expect color, or any kind of graphic display problem try
262262+#: setting text_fg_override_threshold to 0 to see if this is the cause
263263+#: of the problem or consider using the ratio mode of operation
264264+#: described above instead of the % mode of operation.
265265+266266+#: }}}
267267+268268+#: Text cursor customization {{{
269269+270270+# cursor #cccccc
271271+272272+#: Default text cursor color. If set to the special value none the
273273+#: cursor will be rendered with a "reverse video" effect. Its color
274274+#: will be the color of the text in the cell it is over and the text
275275+#: will be rendered with the background color of the cell. Note that
276276+#: if the program running in the terminal sets a cursor color, this
277277+#: takes precedence. Also, the cursor colors are modified if the cell
278278+#: background and foreground colors have very low contrast. Note that
279279+#: some themes set this value, so if you want to override it, place
280280+#: your value after the lines where the theme file is included.
281281+282282+# cursor_text_color #111111
283283+284284+#: The color of text under the cursor. If you want it rendered with
285285+#: the background color of the cell underneath instead, use the
286286+#: special keyword: `background`. Note that if cursor is set to none
287287+#: then this option is ignored. Note that some themes set this value,
288288+#: so if you want to override it, place your value after the lines
289289+#: where the theme file is included.
290290+291291+# cursor_shape block
292292+293293+#: The cursor shape can be one of block, beam, underline. Note that
294294+#: when reloading the config this will be changed only if the cursor
295295+#: shape has not been set by the program running in the terminal. This
296296+#: sets the default cursor shape, applications running in the terminal
297297+#: can override it. In particular, shell integration
298298+#: <https://sw.kovidgoyal.net/kitty/shell-integration/> in kitty sets
299299+#: the cursor shape to beam at shell prompts. You can avoid this by
300300+#: setting shell_integration to no-cursor.
301301+302302+# cursor_shape_unfocused hollow
303303+304304+#: Defines the text cursor shape when the OS window is not focused.
305305+#: The unfocused cursor shape can be one of block, beam, underline,
306306+#: hollow and unchanged (leave the cursor shape as it is).
307307+308308+# cursor_beam_thickness 1.5
309309+310310+#: The thickness of the beam cursor (in pts).
311311+312312+# cursor_underline_thickness 2.0
313313+314314+#: The thickness of the underline cursor (in pts).
315315+316316+# cursor_blink_interval -1
317317+318318+#: The interval to blink the cursor (in seconds). Set to zero to
319319+#: disable blinking. Negative values mean use system default. Note
320320+#: that the minimum interval will be limited to repaint_delay. You can
321321+#: also animate the cursor blink by specifying an easing function. For
322322+#: example, setting this to option to 0.5 ease-in-out will cause the
323323+#: cursor blink to be animated over a second, in the first half of the
324324+#: second it will go from opaque to transparent and then back again
325325+#: over the next half. You can specify different easing functions for
326326+#: the two halves, for example: -1 linear ease-out. kitty supports all
327327+#: the CSS easing functions <https://developer.mozilla.org/en-
328328+#: US/docs/Web/CSS/easing-function>. Note that turning on animations
329329+#: uses extra power as it means the screen is redrawn multiple times
330330+#: per blink interval. See also, cursor_stop_blinking_after.
331331+332332+# cursor_stop_blinking_after 15.0
333333+334334+#: Stop blinking cursor after the specified number of seconds of
335335+#: keyboard inactivity. Set to zero to never stop blinking.
336336+337337+# cursor_trail 0
338338+339339+#: Set this to a value larger than zero to enable a "cursor trail"
340340+#: animation. This is an animation that shows a "trail" following the
341341+#: movement of the text cursor. It makes it easy to follow large
342342+#: cursor jumps and makes for a cool visual effect of the cursor
343343+#: zooming around the screen. The actual value of this option controls
344344+#: when the animation is triggered. It is a number of milliseconds.
345345+#: The trail animation only follows cursors that have stayed in their
346346+#: position for longer than the specified number of milliseconds. This
347347+#: prevents trails from appearing for cursors that rapidly change
348348+#: their positions during UI updates in complex applications. See
349349+#: cursor_trail_decay to control the animation speed and
350350+#: cursor_trail_start_threshold to control when a cursor trail is
351351+#: started.
352352+353353+# cursor_trail_decay 0.1 0.4
354354+355355+#: Controls the decay times for the cursor trail effect when the
356356+#: cursor_trail is enabled. This option accepts two positive float
357357+#: values specifying the fastest and slowest decay times in seconds.
358358+#: The first value corresponds to the fastest decay time (minimum),
359359+#: and the second value corresponds to the slowest decay time
360360+#: (maximum). The second value must be equal to or greater than the
361361+#: first value. Smaller values result in a faster decay of the cursor
362362+#: trail. Adjust these values to control how quickly the cursor trail
363363+#: fades away.
364364+365365+# cursor_trail_start_threshold 2
366366+367367+#: Set the distance threshold for starting the cursor trail. This
368368+#: option accepts a positive integer value that represents the minimum
369369+#: number of cells the cursor must move before the trail is started.
370370+#: When the cursor moves less than this threshold, the trail is
371371+#: skipped, reducing unnecessary cursor trail animation.
372372+373373+#: }}}
374374+375375+#: Scrollback {{{
376376+377377+# scrollback_lines 2000
378378+379379+#: Number of lines of history to keep in memory for scrolling back.
380380+#: Memory is allocated on demand. Negative numbers are (effectively)
381381+#: infinite scrollback. Note that using very large scrollback is not
382382+#: recommended as it can slow down performance of the terminal and
383383+#: also use large amounts of RAM. Instead, consider using
384384+#: scrollback_pager_history_size. Note that on config reload if this
385385+#: is changed it will only affect newly created windows, not existing
386386+#: ones.
387387+388388+# scrollback_indicator_opacity 1.0
389389+390390+#: The opacity of the scrollback indicator which is a small colored
391391+#: rectangle that moves along the right hand side of the window as you
392392+#: scroll, indicating what fraction you have scrolled. The default is
393393+#: one which means fully opaque, aka visible. Set to a value between
394394+#: zero and one to make the indicator less visible.
395395+396396+# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
397397+398398+#: Program with which to view scrollback in a new window. The
399399+#: scrollback buffer is passed as STDIN to this program. If you change
400400+#: it, make sure the program you use can handle ANSI escape sequences
401401+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
402402+#: line above will be replaced by an integer representing which line
403403+#: should be at the top of the screen. Similarly CURSOR_LINE and
404404+#: CURSOR_COLUMN will be replaced by the current cursor position or
405405+#: set to 0 if there is no cursor, for example, when showing the last
406406+#: command output.
407407+408408+# scrollback_pager_history_size 0
409409+410410+#: Separate scrollback history size (in MB), used only for browsing
411411+#: the scrollback buffer with pager. This separate buffer is not
412412+#: available for interactive scrolling but will be piped to the pager
413413+#: program when viewing scrollback buffer in a separate window. The
414414+#: current implementation stores the data in UTF-8, so approximately
415415+#: 10000 lines per megabyte at 100 chars per line, for pure ASCII,
416416+#: unformatted text. A value of zero or less disables this feature.
417417+#: The maximum allowed size is 4GB. Note that on config reload if this
418418+#: is changed it will only affect newly created windows, not existing
419419+#: ones.
420420+421421+# scrollback_fill_enlarged_window no
422422+423423+#: Fill new space with lines from the scrollback buffer after
424424+#: enlarging a window.
425425+426426+# wheel_scroll_multiplier 5.0
427427+428428+#: Multiplier for the number of lines scrolled by the mouse wheel.
429429+#: Note that this is only used for low precision scrolling devices,
430430+#: not for high precision scrolling devices on platforms such as macOS
431431+#: and Wayland. Use negative numbers to change scroll direction. See
432432+#: also wheel_scroll_min_lines.
433433+434434+# wheel_scroll_min_lines 1
435435+436436+#: The minimum number of lines scrolled by the mouse wheel. The scroll
437437+#: multiplier wheel_scroll_multiplier only takes effect after it
438438+#: reaches this number. Note that this is only used for low precision
439439+#: scrolling devices like wheel mice that scroll by very small amounts
440440+#: when using the wheel. With a negative number, the minimum number of
441441+#: lines will always be added.
442442+443443+# touch_scroll_multiplier 1.0
444444+445445+#: Multiplier for the number of lines scrolled by a touchpad. Note
446446+#: that this is only used for high precision scrolling devices on
447447+#: platforms such as macOS and Wayland. Use negative numbers to change
448448+#: scroll direction.
449449+450450+#: }}}
451451+452452+#: Mouse {{{
453453+454454+mouse_hide_wait 0.1
455455+456456+#: Hide mouse cursor after the specified number of seconds of the
457457+#: mouse not being used. Set to zero to disable mouse cursor hiding.
458458+#: Set to a negative value to hide the mouse cursor immediately when
459459+#: typing text. Disabled by default on macOS as getting it to work
460460+#: robustly with the ever-changing sea of bugs that is Cocoa is too
461461+#: much effort.
462462+463463+#: By default, once the cursor is hidden, it is immediately unhidden
464464+#: on any further mouse events.
465465+466466+#: Two formats are supported:
467467+#: - <hide-wait>
468468+#: - <hide-wait> <unhide-wait> <unhide-threshold> <scroll-unhide>
469469+470470+#: To change the unhide behavior, the optional parameters <unhide-
471471+#: wait>, <unhide-threshold>, and <scroll-unhide> may be set.
472472+473473+#: <unhide-wait>
474474+#: Waits for the specified number of seconds after mouse events before unhiding the
475475+#: mouse cursor. Set to zero to unhide mouse cursor immediately on mouse activity.
476476+#: This is useful to prevent the mouse cursor from unhiding on accidental swipes on
477477+#: the trackpad.
478478+479479+#: <unhide-threshold>
480480+#: Sets the threshold of mouse activity required to unhide the mouse cursor, when
481481+#: the <unhide-wait> option is non-zero. When <unhide-wait> is zero, this has no
482482+#: effect.
483483+484484+#: For example, if <unhide-threshold> is 40 and <unhide-wait> is 2.5, when kitty
485485+#: detects a mouse event, it records the number of mouse events in the next 2.5
486486+#: seconds, and checks if that exceeds 40 * 2.5 = 100. If it does, then the mouse
487487+#: cursor is unhidden, otherwise nothing happens.
488488+489489+#: <scroll-unhide>
490490+#: Controls what mouse events may unhide the mouse cursor. If enabled, both scroll
491491+#: and movement events may unhide the cursor. If disabled, only mouse movements can
492492+#: unhide the cursor.
493493+494494+#: Examples of valid values:
495495+#: - 0.0
496496+#: - 1.0
497497+#: - -1.0
498498+#: - 0.1 3.0 40 yes
499499+500500+# url_color #0087bd
501501+# url_style curly
502502+503503+#: The color and style for highlighting URLs on mouse-over. url_style
504504+#: can be one of: none, straight, double, curly, dotted, dashed.
505505+506506+# open_url_with default
507507+508508+#: The program to open clicked URLs. The special value default will
509509+#: first look for any URL handlers defined via the open_actions
510510+#: <https://sw.kovidgoyal.net/kitty/open_actions/> facility and if non
511511+#: are found, it will use the Operating System's default URL handler
512512+#: (open on macOS and xdg-open on Linux).
513513+514514+# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh
515515+516516+#: The set of URL prefixes to look for when detecting a URL under the
517517+#: mouse cursor.
518518+519519+# detect_urls yes
520520+521521+#: Detect URLs under the mouse. Detected URLs are highlighted with an
522522+#: underline and the mouse cursor becomes a hand over them. Even if
523523+#: this option is disabled, URLs are still clickable. See also the
524524+#: underline_hyperlinks option to control how hyperlinks (as opposed
525525+#: to plain text URLs) are displayed.
526526+527527+# url_excluded_characters
528528+529529+#: Additional characters to be disallowed from URLs, when detecting
530530+#: URLs under the mouse cursor. By default, all characters that are
531531+#: legal in URLs are allowed. Additionally, newlines are allowed (but
532532+#: stripped). This is to accommodate programs such as mutt that add
533533+#: hard line breaks even for continued lines. \n can be added to this
534534+#: option to disable this behavior. Special characters can be
535535+#: specified using backslash escapes, to specify a backslash use a
536536+#: double backslash.
537537+538538+# show_hyperlink_targets no
539539+540540+#: When the mouse hovers over a terminal hyperlink, show the actual
541541+#: URL that will be activated when the hyperlink is clicked.
542542+543543+# underline_hyperlinks hover
544544+545545+#: Control how hyperlinks are underlined. They can either be
546546+#: underlined on mouse hover, always (i.e. permanently underlined) or
547547+#: never which means that kitty will not apply any underline styling
548548+#: to hyperlinks. Note that the value of always only applies to real
549549+#: (OSC 8) hyperlinks not text that is detected to be a URL on mouse
550550+#: hover. Uses the url_style and url_color settings for the underline
551551+#: style. Note that reloading the config and changing this value
552552+#: to/from always will only affect text subsequently received by
553553+#: kitty.
554554+555555+# copy_on_select no
556556+557557+#: Copy to clipboard or a private buffer on select. With this set to
558558+#: clipboard, selecting text with the mouse will cause the text to be
559559+#: copied to clipboard. Useful on platforms such as macOS that do not
560560+#: have the concept of primary selection. You can instead specify a
561561+#: name such as a1 to copy to a private kitty buffer. Map a shortcut
562562+#: with the paste_from_buffer action to paste from this private
563563+#: buffer. For example::
564564+565565+#: copy_on_select a1
566566+#: map shift+cmd+v paste_from_buffer a1
567567+568568+#: Note that copying to the clipboard is a security risk, as all
569569+#: programs, including websites open in your browser can read the
570570+#: contents of the system clipboard.
571571+572572+# clear_selection_on_clipboard_loss no
573573+574574+#: When the contents of the clipboard no longer reflect the current
575575+#: selection, clear it. This is primarily useful on platforms such as
576576+#: Linux where selecting text automatically copies it to a special
577577+#: "primary selection" clipboard or if you have copy_on_select set to
578578+#: clipboard.
579579+580580+#: Note that on macOS the system does not provide notifications when
581581+#: the clipboard owner is changed, so there, copying to clipboard in a
582582+#: non-kitty application will not clear selections even if
583583+#: copy_on_select is enabled.
584584+585585+# paste_actions quote-urls-at-prompt,confirm
586586+587587+#: A comma separated list of actions to take when pasting text into
588588+#: the terminal. The supported paste actions are:
589589+590590+#: quote-urls-at-prompt:
591591+#: If the text being pasted is a URL and the cursor is at a shell prompt,
592592+#: automatically quote the URL (needs shell_integration).
593593+#: replace-dangerous-control-codes
594594+#: Replace dangerous control codes from pasted text, without confirmation.
595595+#: replace-newline
596596+#: Replace the newline character from pasted text, without confirmation.
597597+#: confirm:
598598+#: Confirm the paste if the text to be pasted contains any terminal control codes
599599+#: as this can be dangerous, leading to code execution if the shell/program running
600600+#: in the terminal does not properly handle these.
601601+#: confirm-if-large
602602+#: Confirm the paste if it is very large (larger than 16KB) as pasting
603603+#: large amounts of text into shells can be very slow.
604604+#: filter:
605605+#: Run the filter_paste() function from the file paste-actions.py in
606606+#: the kitty config directory on the pasted text. The text returned by the
607607+#: function will be actually pasted.
608608+#: no-op:
609609+#: Has no effect.
610610+611611+# strip_trailing_spaces never
612612+613613+#: Remove spaces at the end of lines when copying to clipboard. A
614614+#: value of smart will do it when using normal selections, but not
615615+#: rectangle selections. A value of always will always do it.
616616+617617+# select_by_word_characters @-./_~?&=%+#
618618+619619+#: Characters considered part of a word when double clicking. In
620620+#: addition to these characters any character that is marked as an
621621+#: alphanumeric character in the Unicode database will be matched.
622622+623623+# select_by_word_characters_forward
624624+625625+#: Characters considered part of a word when extending the selection
626626+#: forward on double clicking. In addition to these characters any
627627+#: character that is marked as an alphanumeric character in the
628628+#: Unicode database will be matched.
629629+630630+#: If empty (default) select_by_word_characters will be used for both
631631+#: directions.
632632+633633+# click_interval -1.0
634634+635635+#: The interval between successive clicks to detect double/triple
636636+#: clicks (in seconds). Negative numbers will use the system default
637637+#: instead, if available, or fallback to 0.5.
638638+639639+# focus_follows_mouse no
640640+641641+#: Set the active window to the window under the mouse when moving the
642642+#: mouse around. On macOS, this will also cause the OS Window under
643643+#: the mouse to be focused automatically when the mouse enters it.
644644+645645+# pointer_shape_when_grabbed arrow
646646+647647+#: The shape of the mouse pointer when the program running in the
648648+#: terminal grabs the mouse.
649649+650650+# default_pointer_shape beam
651651+652652+#: The default shape of the mouse pointer.
653653+654654+# pointer_shape_when_dragging beam crosshair
655655+656656+#: The default shape of the mouse pointer when dragging across text.
657657+#: The optional second value sets the shape when dragging in
658658+#: rectangular selection mode.
659659+660660+#: Mouse actions {{{
661661+662662+#: Mouse buttons can be mapped to perform arbitrary actions. The
663663+#: syntax is:
664664+665665+#: .. code-block:: none
666666+667667+#: mouse_map button-name event-type modes action
668668+669669+#: Where button-name is one of left, middle, right, b1 ... b8 with
670670+#: added keyboard modifiers. For example: ctrl+shift+left refers to
671671+#: holding the Ctrl+Shift keys while clicking with the left mouse
672672+#: button. The value b1 ... b8 can be used to refer to up to eight
673673+#: buttons on a mouse.
674674+675675+#: event-type is one of press, release, doublepress, triplepress,
676676+#: click, doubleclick. modes indicates whether the action is performed
677677+#: when the mouse is grabbed by the program running in the terminal,
678678+#: or not. The values are grabbed or ungrabbed or a comma separated
679679+#: combination of them. grabbed refers to when the program running in
680680+#: the terminal has requested mouse events. Note that the click and
681681+#: double click events have a delay of click_interval to disambiguate
682682+#: from double and triple presses.
683683+684684+#: You can run kitty with the kitty --debug-input command line option
685685+#: to see mouse events. See the builtin actions below to get a sense
686686+#: of what is possible.
687687+688688+#: If you want to unmap a button, map it to nothing. For example, to
689689+#: disable opening of URLs with a plain click::
690690+691691+#: mouse_map left click ungrabbed
692692+693693+#: See all the mappable actions including mouse actions here
694694+#: <https://sw.kovidgoyal.net/kitty/actions/>.
695695+696696+#: .. note::
697697+#: Once a selection is started, releasing the button that started it will
698698+#: automatically end it and no release event will be dispatched.
699699+700700+# clear_all_mouse_actions no
701701+702702+#: Remove all mouse action definitions up to this point. Useful, for
703703+#: instance, to remove the default mouse actions.
704704+705705+#: Click the link under the mouse or move the cursor
706706+707707+# mouse_map left click ungrabbed mouse_handle_click selection link prompt
708708+709709+#:: First check for a selection and if one exists do nothing. Then
710710+#:: check for a link under the mouse cursor and if one exists, click
711711+#:: it. Finally check if the click happened at the current shell
712712+#:: prompt and if so, move the cursor to the click location. Note
713713+#:: that this requires shell integration
714714+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
715715+716716+#: Click the link under the mouse or move the cursor even when grabbed
717717+718718+# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt
719719+720720+#:: Same as above, except that the action is performed even when the
721721+#:: mouse is grabbed by the program running in the terminal.
722722+723723+#: Click the link under the mouse cursor
724724+725725+# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link
726726+727727+#:: Variant with Ctrl+Shift is present because the simple click based
728728+#:: version has an unavoidable delay of click_interval, to
729729+#:: disambiguate clicks from double clicks.
730730+731731+#: Discard press event for link click
732732+733733+# mouse_map ctrl+shift+left press grabbed discard_event
734734+735735+#:: Prevent this press event from being sent to the program that has
736736+#:: grabbed the mouse, as the corresponding release event is used to
737737+#:: open a URL.
738738+739739+#: Paste from the primary selection
740740+741741+# mouse_map middle release ungrabbed paste_from_selection
742742+743743+#: Start selecting text
744744+745745+# mouse_map left press ungrabbed mouse_selection normal
746746+747747+#: Start selecting text in a rectangle
748748+749749+# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle
750750+751751+#: Select a word
752752+753753+# mouse_map left doublepress ungrabbed mouse_selection word
754754+755755+#: Select a line
756756+757757+# mouse_map left triplepress ungrabbed mouse_selection line
758758+759759+#: Select line from point
760760+761761+# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point
762762+763763+#:: Select from the clicked point to the end of the line. If you
764764+#:: would like to select the word at the point and then extend to the
765765+#:: rest of the line, change `line_from_point` to
766766+#:: `word_and_line_from_point`.
767767+768768+#: Extend the current selection
769769+770770+# mouse_map right press ungrabbed mouse_selection extend
771771+772772+#:: If you want only the end of the selection to be moved instead of
773773+#:: the nearest boundary, use move-end instead of extend.
774774+775775+#: Paste from the primary selection even when grabbed
776776+777777+# mouse_map shift+middle release ungrabbed,grabbed paste_selection
778778+# mouse_map shift+middle press grabbed discard_event
779779+780780+#: Start selecting text even when grabbed
781781+782782+# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal
783783+784784+#: Start selecting text in a rectangle even when grabbed
785785+786786+# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle
787787+788788+#: Select a word even when grabbed
789789+790790+# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word
791791+792792+#: Select a line even when grabbed
793793+794794+# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line
795795+796796+#: Select line from point even when grabbed
797797+798798+# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point
799799+800800+#:: Select from the clicked point to the end of the line even when
801801+#:: grabbed. If you would like to select the word at the point and
802802+#:: then extend to the rest of the line, change `line_from_point` to
803803+#:: `word_and_line_from_point`.
804804+805805+#: Extend the current selection even when grabbed
806806+807807+# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend
808808+809809+#: Show clicked command output in pager
810810+811811+# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output
812812+813813+#:: Requires shell integration
814814+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
815815+816816+#: }}}
817817+818818+#: }}}
819819+820820+#: Performance tuning {{{
821821+822822+# repaint_delay 10
823823+824824+#: Delay between screen updates (in milliseconds). Decreasing it,
825825+#: increases frames-per-second (FPS) at the cost of more CPU usage.
826826+#: The default value yields ~100 FPS which is more than sufficient for
827827+#: most uses. Note that to actually achieve 100 FPS, you have to
828828+#: either set sync_to_monitor to no or use a monitor with a high
829829+#: refresh rate. Also, to minimize latency when there is pending input
830830+#: to be processed, this option is ignored.
831831+832832+# input_delay 3
833833+834834+#: Delay before input from the program running in the terminal is
835835+#: processed (in milliseconds). Note that decreasing it will increase
836836+#: responsiveness, but also increase CPU usage and might cause flicker
837837+#: in full screen programs that redraw the entire screen on each loop,
838838+#: because kitty is so fast that partial screen updates will be drawn.
839839+#: This setting is ignored when the input buffer is almost full.
840840+841841+# sync_to_monitor yes
842842+843843+#: Sync screen updates to the refresh rate of the monitor. This
844844+#: prevents screen tearing
845845+#: <https://en.wikipedia.org/wiki/Screen_tearing> when scrolling.
846846+#: However, it limits the rendering speed to the refresh rate of your
847847+#: monitor. With a very high speed mouse/high keyboard repeat rate,
848848+#: you may notice some slight input latency. If so, set this to no.
849849+850850+#: }}}
851851+852852+#: Terminal bell {{{
853853+854854+# enable_audio_bell yes
855855+856856+#: The audio bell. Useful to disable it in environments that require
857857+#: silence.
858858+859859+# visual_bell_duration 0.0
860860+861861+#: The visual bell duration (in seconds). Flash the screen when a bell
862862+#: occurs for the specified number of seconds. Set to zero to disable.
863863+#: The flash is animated, fading in and out over the specified
864864+#: duration. The easing function used for the fading can be
865865+#: controlled. For example, 2.0 linear will casuse the flash to fade
866866+#: in and out linearly. The default if unspecified is to use ease-in-
867867+#: out which fades slowly at the start, middle and end. You can
868868+#: specify different easing functions for the fade-in and fade-out
869869+#: parts, like this: 2.0 ease-in linear. kitty supports all the CSS
870870+#: easing functions <https://developer.mozilla.org/en-
871871+#: US/docs/Web/CSS/easing-function>.
872872+873873+# visual_bell_color none
874874+875875+#: The color used by visual bell. Set to none will fall back to
876876+#: selection background color. If you feel that the visual bell is too
877877+#: bright, you can set it to a darker color.
878878+879879+# window_alert_on_bell yes
880880+881881+#: Request window attention on bell. Makes the dock icon bounce on
882882+#: macOS or the taskbar flash on Linux.
883883+884884+# bell_on_tab "🔔 "
885885+886886+#: Some text or a Unicode symbol to show on the tab if a window in the
887887+#: tab that does not have focus has a bell. If you want to use leading
888888+#: or trailing spaces, surround the text with quotes. See
889889+#: tab_title_template for how this is rendered.
890890+891891+#: For backwards compatibility, values of yes, y and true are
892892+#: converted to the default bell symbol and no, n, false and none are
893893+#: converted to the empty string.
894894+895895+# command_on_bell none
896896+897897+#: Program to run when a bell occurs. The environment variable
898898+#: KITTY_CHILD_CMDLINE can be used to get the program running in the
899899+#: window in which the bell occurred.
900900+901901+# bell_path none
902902+903903+#: Path to a sound file to play as the bell sound. If set to none, the
904904+#: system default bell sound is used. Must be in a format supported by
905905+#: the operating systems sound API, such as WAV or OGA on Linux
906906+#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound). Relative
907907+#: paths are resolved with respect to the kitty config directory.
908908+909909+# linux_bell_theme __custom
910910+911911+#: The XDG Sound Theme kitty will use to play the bell sound. On
912912+#: Wayland, when the compositor supports it, it is asked to play the
913913+#: system default bell sound, and this setting has no effect. Note
914914+#: that Hyprland claims to support this protocol, but does not
915915+#: actually play a sound
916916+#: <https://github.com/hyprwm/Hyprland/issues/10488>. This setting
917917+#: defaults to the custom theme name specified in the XDG Sound theme
918918+#: specification <https://specifications.freedesktop.org/sound-theme-
919919+#: spec/latest/sound_lookup.html>, falling back to the default
920920+#: freedesktop theme if it does not exist. To change your sound theme
921921+#: desktop wide, create
922922+#: :file:~/.local/share/sounds/__custom/index.theme` with the
923923+#: contents:
924924+925925+#: [Sound Theme]
926926+927927+#: Inherits=name-of-the-sound-theme-you-want-to-use
928928+929929+#: Replace name-of-the-sound-theme-you-want-to-use with the actual
930930+#: theme name. Now all compliant applications should use sounds from
931931+#: this theme.
932932+933933+#: }}}
934934+935935+#: Window layout {{{
936936+937937+# remember_window_size yes
938938+# initial_window_width 640
939939+# initial_window_height 400
940940+941941+#: If enabled, the OS Window size will be remembered so that new
942942+#: instances of kitty will have the same size as the previous
943943+#: instance. If disabled, the OS Window will initially have size
944944+#: configured by initial_window_width/height, in pixels. You can use a
945945+#: suffix of "c" on the width/height values to have them interpreted
946946+#: as number of cells instead of pixels.
947947+948948+# remember_window_position no
949949+950950+#: If enabled, the OS Window position will be remembered so that new
951951+#: instances of kitty will have the same position as the previous
952952+#: instance. If disabled, the OS Window will be placed by the window
953953+#: manager. Note that remembering of position only works if the
954954+#: underlying desktop environment/window manager supports it. It never
955955+#: works on Wayland. See also kitty --position to specify the position
956956+#: when launching kitty.
957957+958958+# enabled_layouts *
959959+960960+#: The enabled window layouts. A comma separated list of layout names.
961961+#: The special value all means all layouts. The first listed layout
962962+#: will be used as the startup layout. Default configuration is all
963963+#: layouts in alphabetical order. For a list of available layouts, see
964964+#: the layouts <https://sw.kovidgoyal.net/kitty/overview/#layouts>.
965965+966966+# window_resize_step_cells 2
967967+# window_resize_step_lines 2
968968+969969+#: The step size (in units of cell width/cell height) to use when
970970+#: resizing kitty windows in a layout with the shortcut
971971+#: start_resizing_window. The cells value is used for horizontal
972972+#: resizing, and the lines value is used for vertical resizing.
973973+974974+# window_border_width 0.5pt
975975+976976+#: The width of window borders. Can be either in pixels (px) or pts
977977+#: (pt). Values in pts will be rounded to the nearest number of pixels
978978+#: based on screen resolution. If not specified, the unit is assumed
979979+#: to be pts. Note that borders are displayed only when more than one
980980+#: window is visible. They are meant to separate multiple windows.
981981+982982+# draw_minimal_borders yes
983983+984984+#: Draw only the minimum borders needed. This means that only the
985985+#: borders that separate the window from a neighbor are drawn. Note
986986+#: that setting a non-zero window_margin_width overrides this and
987987+#: causes all borders to be drawn.
988988+989989+# window_margin_width 0
990990+991991+#: The window margin (in pts) (blank area outside the border). A
992992+#: single value sets all four sides. Two values set the vertical and
993993+#: horizontal sides. Three values set top, horizontal and bottom. Four
994994+#: values set top, right, bottom and left.
995995+996996+# single_window_margin_width -1
997997+998998+#: The window margin to use when only a single window is visible (in
999999+#: pts). Negative values will cause the value of window_margin_width
10001000+#: to be used instead. A single value sets all four sides. Two values
10011001+#: set the vertical and horizontal sides. Three values set top,
10021002+#: horizontal and bottom. Four values set top, right, bottom and left.
10031003+10041004+# window_padding_width 0
10051005+10061006+#: The window padding (in pts) (blank area between the text and the
10071007+#: window border). A single value sets all four sides. Two values set
10081008+#: the vertical and horizontal sides. Three values set top, horizontal
10091009+#: and bottom. Four values set top, right, bottom and left.
10101010+10111011+# single_window_padding_width -1
10121012+10131013+#: The window padding to use when only a single window is visible (in
10141014+#: pts). Negative values will cause the value of window_padding_width
10151015+#: to be used instead. A single value sets all four sides. Two values
10161016+#: set the vertical and horizontal sides. Three values set top,
10171017+#: horizontal and bottom. Four values set top, right, bottom and left.
10181018+10191019+# placement_strategy center
10201020+10211021+#: When the window size is not an exact multiple of the cell size, the
10221022+#: cell area of the terminal window will have some extra padding on
10231023+#: the sides. You can control how that padding is distributed with
10241024+#: this option. Using a value of center means the cell area will be
10251025+#: placed centrally. A value of top-left means the padding will be
10261026+#: only at the bottom and right edges. The value can be one of: top-
10271027+#: left, top, top-right, left, center, right, bottom-left, bottom,
10281028+#: bottom-right.
10291029+10301030+# active_border_color #00ff00
10311031+10321032+#: The color for the border of the active window. Set this to none to
10331033+#: not draw borders around the active window.
10341034+10351035+# inactive_border_color #cccccc
10361036+10371037+#: The color for the border of inactive windows.
10381038+10391039+# bell_border_color #ff5a00
10401040+10411041+#: The color for the border of inactive windows in which a bell has
10421042+#: occurred.
10431043+10441044+# inactive_text_alpha 1.0
10451045+10461046+#: Fade the text in inactive windows by the specified amount (a number
10471047+#: between zero and one, with zero being fully faded).
10481048+10491049+hide_window_decorations yes
10501050+10511051+#: Hide the window decorations (title-bar and window borders) with
10521052+#: yes. On macOS, titlebar-only and titlebar-and-corners can be used
10531053+#: to only hide the titlebar and the rounded corners. Whether this
10541054+#: works and exactly what effect it has depends on the window
10551055+#: manager/operating system. Note that the effects of changing this
10561056+#: option when reloading config are undefined. When using titlebar-
10571057+#: only, it is useful to also set window_margin_width and
10581058+#: placement_strategy to prevent the rounded corners from clipping
10591059+#: text. Or use titlebar-and-corners.
10601060+10611061+# window_logo_path none
10621062+10631063+#: Path to a logo image. Must be in PNG/JPEG/WEBP/GIF/TIFF/BMP format.
10641064+#: Relative paths are interpreted relative to the kitty config
10651065+#: directory. The logo is displayed in a corner of every kitty window.
10661066+#: The position is controlled by window_logo_position. Individual
10671067+#: windows can be configured to have different logos either using the
10681068+#: launch action or the remote control
10691069+#: <https://sw.kovidgoyal.net/kitty/remote-control/> facility.
10701070+10711071+# window_logo_position bottom-right
10721072+10731073+#: Where to position the window logo in the window. The value can be
10741074+#: one of: top-left, top, top-right, left, center, right, bottom-left,
10751075+#: bottom, bottom-right.
10761076+10771077+# window_logo_alpha 0.5
10781078+10791079+#: The amount the logo should be faded into the background. With zero
10801080+#: being fully faded and one being fully opaque.
10811081+10821082+# window_logo_scale 0
10831083+10841084+#: The percentage (0-100] of the window size to which the logo should
10851085+#: scale. Using a single number means the logo is scaled to that
10861086+#: percentage of the shortest window dimension, while preserving
10871087+#: aspect ratio of the logo image.
10881088+10891089+#: Using two numbers means the width and height of the logo are scaled
10901090+#: to the respective percentage of the window's width and height.
10911091+10921092+#: Using zero as the percentage disables scaling in that dimension. A
10931093+#: single zero (the default) disables all scaling of the window logo.
10941094+10951095+# resize_debounce_time 0.1 0.5
10961096+10971097+#: The time to wait (in seconds) before asking the program running in
10981098+#: kitty to resize and redraw the screen during a live resize of the
10991099+#: OS window, when no new resize events have been received, i.e. when
11001100+#: resizing is either paused or finished. On platforms such as macOS,
11011101+#: where the operating system sends events corresponding to the start
11021102+#: and end of a live resize, the second number is used for redraw-
11031103+#: after-pause since kitty can distinguish between a pause and end of
11041104+#: resizing. On such systems the first number is ignored and redraw is
11051105+#: immediate after end of resize. On other systems only the first
11061106+#: number is used so that kitty is "ready" quickly after the end of
11071107+#: resizing, while not also continuously redrawing, to save energy.
11081108+11091109+# resize_in_steps no
11101110+11111111+#: Resize the OS window in steps as large as the cells, instead of
11121112+#: with the usual pixel accuracy. Combined with initial_window_width
11131113+#: and initial_window_height in number of cells, this option can be
11141114+#: used to keep the margins as small as possible when resizing the OS
11151115+#: window. Note that this does not currently work on Wayland.
11161116+11171117+# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
11181118+11191119+#: The list of characters for visual window selection. For example,
11201120+#: for selecting a window to focus on with focus_visible_window. The
11211121+#: value should be a series of unique numbers or alphabets, case
11221122+#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your
11231123+#: preference as a string of characters.
11241124+11251125+# confirm_os_window_close -1
11261126+11271127+#: Ask for confirmation when closing an OS window or a tab with at
11281128+#: least this number of kitty windows in it by window manager (e.g.
11291129+#: clicking the window close button or pressing the operating system
11301130+#: shortcut to close windows) or by the close_tab action. A value of
11311131+#: zero disables confirmation. This confirmation also applies to
11321132+#: requests to quit the entire application (all OS windows, via the
11331133+#: quit action). Negative values are converted to positive ones,
11341134+#: however, with shell_integration enabled, using negative values
11351135+#: means windows sitting at a shell prompt are not counted, only
11361136+#: windows where some command is currently running. You can also have
11371137+#: backgrounded jobs prevent closing, by adding count-background to
11381138+#: the setting, for example: -1 count-background. Note that if you
11391139+#: want confirmation when closing individual windows, you can map the
11401140+#: close_window_with_confirmation action.
11411141+11421142+#: }}}
11431143+11441144+#: Tab bar {{{
11451145+11461146+# tab_bar_edge bottom
11471147+11481148+#: The edge to show the tab bar on, top or bottom.
11491149+11501150+# tab_bar_margin_width 0.0
11511151+11521152+#: The margin to the left and right of the tab bar (in pts).
11531153+11541154+# tab_bar_margin_height 0.0 0.0
11551155+11561156+#: The margin above and below the tab bar (in pts). The first number
11571157+#: is the margin between the edge of the OS Window and the tab bar.
11581158+#: The second number is the margin between the tab bar and the
11591159+#: contents of the current tab.
11601160+11611161+# tab_bar_style fade
11621162+11631163+#: The tab bar style, can be one of:
11641164+11651165+#: fade
11661166+#: Each tab's edges fade into the background color. (See also tab_fade)
11671167+#: slant
11681168+#: Tabs look like the tabs in a physical file.
11691169+#: separator
11701170+#: Tabs are separated by a configurable separator. (See also
11711171+#: tab_separator)
11721172+#: powerline
11731173+#: Tabs are shown as a continuous line with "fancy" separators.
11741174+#: (See also tab_powerline_style)
11751175+#: custom
11761176+#: A user-supplied Python function called draw_tab is loaded from the file
11771177+#: tab_bar.py in the kitty config directory. For examples of how to
11781178+#: write such a function, see the functions named draw_tab_with_* in
11791179+#: kitty's source code: kitty/tab_bar.py. See also
11801180+#: this discussion <https://github.com/kovidgoyal/kitty/discussions/4447>
11811181+#: for examples from kitty users.
11821182+#: hidden
11831183+#: The tab bar is hidden. If you use this, you might want to create
11841184+#: a mapping for the select_tab action which presents you with a list of
11851185+#: tabs and allows for easy switching to a tab.
11861186+11871187+# tab_bar_align left
11881188+11891189+#: The horizontal alignment of the tab bar, can be one of: left,
11901190+#: center, right.
11911191+11921192+# tab_bar_min_tabs 2
11931193+11941194+#: The minimum number of tabs that must exist before the tab bar is
11951195+#: shown.
11961196+11971197+# tab_switch_strategy previous
11981198+11991199+#: The algorithm to use when switching to a tab when the current tab
12001200+#: is closed. The default of previous will switch to the last used
12011201+#: tab. A value of left will switch to the tab to the left of the
12021202+#: closed tab. A value of right will switch to the tab to the right of
12031203+#: the closed tab. A value of last will switch to the right-most tab.
12041204+12051205+# tab_fade 0.25 0.5 0.75 1
12061206+12071207+#: Control how each tab fades into the background when using fade for
12081208+#: the tab_bar_style. Each number is an alpha (between zero and one)
12091209+#: that controls how much the corresponding cell fades into the
12101210+#: background, with zero being no fade and one being full fade. You
12111211+#: can change the number of cells used by adding/removing entries to
12121212+#: this list.
12131213+12141214+# tab_separator " ┇"
12151215+12161216+#: The separator between tabs in the tab bar when using separator as
12171217+#: the tab_bar_style.
12181218+12191219+# tab_powerline_style angled
12201220+12211221+#: The powerline separator style between tabs in the tab bar when
12221222+#: using powerline as the tab_bar_style, can be one of: angled,
12231223+#: slanted, round.
12241224+12251225+# tab_activity_symbol none
12261226+12271227+#: Some text or a Unicode symbol to show on the tab if a window in the
12281228+#: tab that does not have focus has some activity. If you want to use
12291229+#: leading or trailing spaces, surround the text with quotes. See
12301230+#: tab_title_template for how this is rendered.
12311231+12321232+# tab_title_max_length 0
12331233+12341234+#: The maximum number of cells that can be used to render the text in
12351235+#: a tab. A value of zero means that no limit is applied.
12361236+12371237+# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.last_focused_progress_percent}{title}"
12381238+12391239+#: A template to render the tab title. The default just renders the
12401240+#: title with optional symbols for bell and activity. If you wish to
12411241+#: include the tab-index as well, use something like: {index}:{title}.
12421242+#: Useful if you have shortcuts mapped for goto_tab N. If you prefer
12431243+#: to see the index as a superscript, use {sup.index}. All data
12441244+#: available is:
12451245+12461246+#: title
12471247+#: The current tab title.
12481248+#: index
12491249+#: The tab index usable with goto_tab N goto_tab shortcuts.
12501250+#: layout_name
12511251+#: The current layout name.
12521252+#: num_windows
12531253+#: The number of windows in the tab.
12541254+#: num_window_groups
12551255+#: The number of window groups (a window group is a window and all of its overlay windows) in the tab.
12561256+#: tab.active_wd
12571257+#: The working directory of the currently active window in the tab
12581258+#: (expensive, requires syscall). Use tab.active_oldest_wd to get
12591259+#: the directory of the oldest foreground process rather than the newest.
12601260+#: tab.active_exe
12611261+#: The name of the executable running in the foreground of the currently
12621262+#: active window in the tab (expensive, requires syscall). Use
12631263+#: tab.active_oldest_exe for the oldest foreground process.
12641264+#: max_title_length
12651265+#: The maximum title length available.
12661266+#: keyboard_mode
12671267+#: The name of the current keyboard mode <https://sw.kovidgoyal.net/kitty/mapping/#modal-mappings> or the empty string if no keyboard mode is active.
12681268+#: tab.last_focused_progress_percent
12691269+#: If a command running in a window reports the progress for a task, show this progress as a percentage
12701270+#: from the most recently focused window in the tab. Empty string if no progress is reported.
12711271+#: tab.progress_percent
12721272+#: If a command running in a window reports the progress for a task, show this progress as a percentage
12731273+#: from all windows in the tab, averaged. Empty string is no progress is reported.
12741274+12751275+#: Note that formatting is done by Python's string formatting
12761276+#: machinery, so you can use, for instance, {layout_name[:2].upper()}
12771277+#: to show only the first two letters of the layout name, upper-cased.
12781278+#: If you want to style the text, you can use styling directives, for
12791279+#: example:
12801280+#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`.
12811281+#: Similarly, for bold and italic:
12821282+#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`.
12831283+#: The 256 eight terminal colors can be used as `fmt.fg.color0`
12841284+#: through `fmt.fg.color255`. Note that for backward compatibility, if
12851285+#: {bell_symbol} or {activity_symbol} are not present in the template,
12861286+#: they are prepended to it.
12871287+12881288+# active_tab_title_template none
12891289+12901290+#: Template to use for active tabs. If not specified falls back to
12911291+#: tab_title_template.
12921292+12931293+# active_tab_foreground #000
12941294+# active_tab_background #eee
12951295+# active_tab_font_style bold-italic
12961296+# inactive_tab_foreground #444
12971297+# inactive_tab_background #999
12981298+# inactive_tab_font_style normal
12991299+13001300+#: Tab bar colors and styles.
13011301+13021302+# tab_bar_background none
13031303+13041304+#: Background color for the tab bar. Defaults to using the terminal
13051305+#: background color.
13061306+13071307+# tab_bar_margin_color none
13081308+13091309+#: Color for the tab bar margin area. Defaults to using the terminal
13101310+#: background color for margins above and below the tab bar. For side
13111311+#: margins the default color is chosen to match the background color
13121312+#: of the neighboring tab.
13131313+13141314+#: }}}
13151315+13161316+#: Color scheme {{{
13171317+13181318+# gruvbox dark by morhetz, https://github.com/morhetz/gruvbox
13191319+background #282828
13201320+foreground #ebdbb2
13211321+13221322+cursor #928374
13231323+13241324+selection_foreground #928374
13251325+selection_background #3c3836
13261326+13271327+color0 #282828
13281328+color8 #928374
13291329+13301330+# red
13311331+color1 #cc241d
13321332+# light red
13331333+color9 #fb4934
13341334+13351335+# green
13361336+color2 #98971a
13371337+# light green
13381338+color10 #b8bb26
13391339+13401340+# yellow
13411341+color3 #d79921
13421342+# light yellow
13431343+color11 #fabd2d
13441344+13451345+# blue
13461346+color4 #458588
13471347+# light blue
13481348+color12 #83a598
13491349+13501350+# magenta
13511351+color5 #b16286
13521352+# light magenta
13531353+color13 #d3869b
13541354+13551355+# cyan
13561356+color6 #689d6a
13571357+# lighy cyan
13581358+color14 #8ec07c
13591359+13601360+# light gray
13611361+color7 #a89984
13621362+# dark gray
13631363+color15 #928374
13641364+13651365+13661366+# foreground #dddddd
13671367+# background #000000
13681368+13691369+#: The foreground and background colors.
13701370+13711371+# background_opacity 1.0
13721372+13731373+#: The opacity of the background. A number between zero and one, where
13741374+#: one is opaque and zero is fully transparent. This will only work if
13751375+#: supported by the OS (for instance, when using a compositor under
13761376+#: X11). Note that it only sets the background color's opacity in
13771377+#: cells that have the same background color as the default terminal
13781378+#: background, so that things like the status bar in vim, powerline
13791379+#: prompts, etc. still look good. But it means that if you use a color
13801380+#: theme with a background color in your editor, it will not be
13811381+#: rendered as transparent. Instead you should change the default
13821382+#: background color in your kitty config and not use a background
13831383+#: color in the editor color scheme. Or use the escape codes to set
13841384+#: the terminals default colors in a shell script to launch your
13851385+#: editor. See also transparent_background_colors. Be aware that using
13861386+#: a value less than 1.0 is a (possibly significant) performance hit.
13871387+#: When using a low value for this setting, it is desirable that you
13881388+#: set the background color to a color the matches the general color
13891389+#: of the desktop background, for best text rendering. Note that to
13901390+#: workaround window managers not doing gamma-corrected blending kitty
13911391+#: makes background_opacity non-linear which means, especially for
13921392+#: light backgrounds you might need to make the value much lower than
13931393+#: you expect to get good results, see 6218
13941394+#: <https://github.com/kovidgoyal/kitty/issues/6218> for details.
13951395+13961396+#: If you want to dynamically change transparency of windows, set
13971397+#: dynamic_background_opacity to yes (this is off by default as it has
13981398+#: a performance cost). Changing this option when reloading the config
13991399+#: will only work if dynamic_background_opacity was enabled in the
14001400+#: original config.
14011401+14021402+# background_blur 0
14031403+14041404+#: Set to a positive value to enable background blur (blurring of the
14051405+#: visuals behind a transparent window) on platforms that support it.
14061406+#: Only takes effect when background_opacity is less than one. On
14071407+#: macOS, this will also control the blur radius (amount of blurring).
14081408+#: Setting it to too high a value will cause severe performance issues
14091409+#: and/or rendering artifacts. Usually, values up to 64 work well.
14101410+#: Note that this might cause performance issues, depending on how the
14111411+#: platform implements it, so use with care. Currently supported on
14121412+#: macOS and KDE.
14131413+14141414+# transparent_background_colors
14151415+14161416+#: A space separated list of upto 7 colors, with opacity. When the
14171417+#: background color of a cell matches one of these colors, it is
14181418+#: rendered semi-transparent using the specified opacity.
14191419+14201420+#: Useful in more complex UIs like editors where you could want more
14211421+#: than a single background color to be rendered as transparent, for
14221422+#: instance, for a cursor highlight line background or a highlighted
14231423+#: block. Terminal applications can set this color using The kitty
14241424+#: color control <https://sw.kovidgoyal.net/kitty/color-stack/#color-
14251425+#: control> escape code.
14261426+14271427+#: The syntax for specifying colors is: color@opacity, where the
14281428+#: @opacity part is optional. When unspecified, the value of
14291429+#: background_opacity is used. For example::
14301430+14311431+#: transparent_background_colors red@0.5 #00ff00@0.3
14321432+14331433+# dynamic_background_opacity no
14341434+14351435+#: Allow changing of the background_opacity dynamically, using either
14361436+#: keyboard shortcuts (increase_background_opacity and
14371437+#: decrease_background_opacity) or the remote control facility.
14381438+#: Changing this option by reloading the config is not supported.
14391439+14401440+# background_image none
14411441+14421442+#: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP
14431443+#: format. Note that when using auto_color_scheme
14441444+#: <https://sw.kovidgoyal.net/kitty/kittens/themes/#auto-color-scheme>
14451445+#: this option is overridden by the color scheme file and must be set
14461446+#: inside it to take effect.
14471447+14481448+# background_image_layout tiled
14491449+14501450+#: Whether to tile, scale or clamp the background image. The value can
14511451+#: be one of tiled, mirror-tiled, scaled, clamped, centered or
14521452+#: cscaled. The scaled and cscaled values scale the image to the
14531453+#: window size, with cscaled preserving the image aspect ratio. Note
14541454+#: that when using auto_color_scheme
14551455+#: <https://sw.kovidgoyal.net/kitty/kittens/themes/#auto-color-scheme>
14561456+#: this option is overridden by the color scheme file and must be set
14571457+#: inside it to take effect.
14581458+14591459+# background_image_linear no
14601460+14611461+#: When background image is scaled, whether linear interpolation
14621462+#: should be used. Note that when using auto_color_scheme
14631463+#: <https://sw.kovidgoyal.net/kitty/kittens/themes/#auto-color-scheme>
14641464+#: this option is overridden by the color scheme file and must be set
14651465+#: inside it to take effect.
14661466+14671467+# background_tint 0.0
14681468+14691469+#: How much to tint the background image by the background color. This
14701470+#: option makes it easier to read the text. Tinting is done using the
14711471+#: current background color for each window. This option applies only
14721472+#: if background_opacity is set and transparent windows are supported
14731473+#: or background_image is set. Note that when using auto_color_scheme
14741474+#: <https://sw.kovidgoyal.net/kitty/kittens/themes/#auto-color-scheme>
14751475+#: this option is overridden by the color scheme file and must be set
14761476+#: inside it to take effect.
14771477+14781478+# background_tint_gaps 1.0
14791479+14801480+#: How much to tint the background image at the window gaps by the
14811481+#: background color, after applying background_tint. Since this is
14821482+#: multiplicative with background_tint, it can be used to lighten the
14831483+#: tint over the window gaps for a *separated* look. Note that when
14841484+#: using auto_color_scheme
14851485+#: <https://sw.kovidgoyal.net/kitty/kittens/themes/#auto-color-scheme>
14861486+#: this option is overridden by the color scheme file and must be set
14871487+#: inside it to take effect.
14881488+14891489+# dim_opacity 0.4
14901490+14911491+#: How much to dim text that has the DIM/FAINT attribute set. One
14921492+#: means no dimming and zero means fully dimmed (i.e. invisible).
14931493+14941494+# selection_foreground #000000
14951495+# selection_background #fffacd
14961496+14971497+#: The foreground and background colors for text selected with the
14981498+#: mouse. Setting both of these to none will cause a "reverse video"
14991499+#: effect for selections, where the selection will be the cell text
15001500+#: color and the text will become the cell background color. Setting
15011501+#: only selection_foreground to none will cause the foreground color
15021502+#: to be used unchanged. Note that these colors can be overridden by
15031503+#: the program running in the terminal.
15041504+15051505+#: The color table {{{
15061506+15071507+#: The 256 terminal colors. There are 8 basic colors, each color has a
15081508+#: dull and bright version, for the first 16 colors. You can set the
15091509+#: remaining 240 colors as color16 to color255.
15101510+15111511+# color0 #000000
15121512+# color8 #767676
15131513+15141514+#: black
15151515+15161516+# color1 #cc0403
15171517+# color9 #f2201f
15181518+15191519+#: red
15201520+15211521+# color2 #19cb00
15221522+# color10 #23fd00
15231523+15241524+#: green
15251525+15261526+# color3 #cecb00
15271527+# color11 #fffd00
15281528+15291529+#: yellow
15301530+15311531+# color4 #0d73cc
15321532+# color12 #1a8fff
15331533+15341534+#: blue
15351535+15361536+# color5 #cb1ed1
15371537+# color13 #fd28ff
15381538+15391539+#: magenta
15401540+15411541+# color6 #0dcdcd
15421542+# color14 #14ffff
15431543+15441544+#: cyan
15451545+15461546+# color7 #dddddd
15471547+# color15 #ffffff
15481548+15491549+#: white
15501550+15511551+# mark1_foreground black
15521552+15531553+#: Color for marks of type 1
15541554+15551555+# mark1_background #98d3cb
15561556+15571557+#: Color for marks of type 1 (light steel blue)
15581558+15591559+# mark2_foreground black
15601560+15611561+#: Color for marks of type 2
15621562+15631563+# mark2_background #f2dcd3
15641564+15651565+#: Color for marks of type 1 (beige)
15661566+15671567+# mark3_foreground black
15681568+15691569+#: Color for marks of type 3
15701570+15711571+# mark3_background #f274bc
15721572+15731573+#: Color for marks of type 3 (violet)
15741574+15751575+#: }}}
15761576+15771577+#: }}}
15781578+15791579+#: Advanced {{{
15801580+15811581+# shell .
15821582+15831583+#: The shell program to execute. The default value of . means to use
15841584+#: the value of of the SHELL environment variable or if unset,
15851585+#: whatever shell is set as the default shell for the current user.
15861586+#: Note that on macOS if you change this, you might need to add
15871587+#: --login and --interactive to ensure that the shell starts in
15881588+#: interactive mode and reads its startup rc files. Environment
15891589+#: variables are expanded in this setting.
15901590+15911591+# editor .
15921592+15931593+#: The terminal based text editor (such as vim or nano) to use when
15941594+#: editing the kitty config file or similar tasks.
15951595+15961596+#: The default value of . means to use the environment variables
15971597+#: VISUAL and EDITOR in that order. If these variables aren't set,
15981598+#: kitty will run your shell ($SHELL -l -i -c env) to see if your
15991599+#: shell startup rc files set VISUAL or EDITOR. If that doesn't work,
16001600+#: kitty will cycle through various known editors (vim, emacs, etc.)
16011601+#: and take the first one that exists on your system.
16021602+16031603+# close_on_child_death no
16041604+16051605+#: Close the window when the child process (usually the shell) exits.
16061606+#: With the default value no, the terminal will remain open when the
16071607+#: child exits as long as there are still other processes outputting
16081608+#: to the terminal (for example disowned or backgrounded processes).
16091609+#: When enabled with yes, the window will close as soon as the child
16101610+#: process exits. Note that setting it to yes means that any
16111611+#: background processes still using the terminal can fail silently
16121612+#: because their stdout/stderr/stdin no longer work.
16131613+16141614+# remote_control_password
16151615+16161616+#: Allow other programs to control kitty using passwords. This option
16171617+#: can be specified multiple times to add multiple passwords. If no
16181618+#: passwords are present kitty will ask the user for permission if a
16191619+#: program tries to use remote control with a password. A password can
16201620+#: also *optionally* be associated with a set of allowed remote
16211621+#: control actions. For example::
16221622+16231623+#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab
16241624+16251625+#: Only the specified actions will be allowed when using this
16261626+#: password. Glob patterns can be used too, for example::
16271627+16281628+#: remote_control_password "my passphrase" set-tab-* resize-*
16291629+16301630+#: To get a list of available actions, run::
16311631+16321632+#: kitten @ --help
16331633+16341634+#: A set of actions to be allowed when no password is sent can be
16351635+#: specified by using an empty password. For example::
16361636+16371637+#: remote_control_password "" *-colors
16381638+16391639+#: Finally, the path to a python module can be specified that provides
16401640+#: a function is_cmd_allowed that is used to check every remote
16411641+#: control command. For example::
16421642+16431643+#: remote_control_password "my passphrase" my_rc_command_checker.py
16441644+16451645+#: Relative paths are resolved from the kitty configuration directory.
16461646+#: See rc_custom_auth <https://sw.kovidgoyal.net/kitty/remote-
16471647+#: control/#rc-custom-auth> for details.
16481648+16491649+# allow_remote_control no
16501650+16511651+#: Allow other programs to control kitty. If you turn this on, other
16521652+#: programs can control all aspects of kitty, including sending text
16531653+#: to kitty windows, opening new windows, closing windows, reading the
16541654+#: content of windows, etc. Note that this even works over SSH
16551655+#: connections. The default setting of no prevents any form of remote
16561656+#: control. The meaning of the various values are:
16571657+16581658+#: password
16591659+#: Remote control requests received over both the TTY device and the socket
16601660+#: are confirmed based on passwords, see remote_control_password.
16611661+16621662+#: socket-only
16631663+#: Remote control requests received over a socket are accepted
16641664+#: unconditionally. Requests received over the TTY are denied.
16651665+#: See listen_on.
16661666+16671667+#: socket
16681668+#: Remote control requests received over a socket are accepted
16691669+#: unconditionally. Requests received over the TTY are confirmed based on
16701670+#: password.
16711671+16721672+#: no
16731673+#: Remote control is completely disabled.
16741674+16751675+#: yes
16761676+#: Remote control requests are always accepted.
16771677+16781678+# listen_on none
16791679+16801680+#: Listen to the specified socket for remote control connections. Note
16811681+#: that this will apply to all kitty instances. It can be overridden
16821682+#: by the kitty --listen-on command line option. For UNIX sockets,
16831683+#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux).
16841684+#: Environment variables are expanded and relative paths are resolved
16851685+#: with respect to the temporary directory. If {kitty_pid} is present,
16861686+#: then it is replaced by the PID of the kitty process, otherwise the
16871687+#: PID of the kitty process is appended to the value, with a hyphen.
16881688+#: For TCP sockets such as tcp:localhost:0 a random port is always
16891689+#: used even if a non-zero port number is specified. See the help for
16901690+#: kitty --listen-on for more details. Note that this will be ignored
16911691+#: unless allow_remote_control is set to either: yes, socket or
16921692+#: socket-only. Changing this option by reloading the config is not
16931693+#: supported.
16941694+16951695+# env
16961696+16971697+#: Specify the environment variables to be set in all child processes.
16981698+#: Using the name with an equal sign (e.g. env VAR=) will set it to
16991699+#: the empty string. Specifying only the name (e.g. env VAR) will
17001700+#: remove the variable from the child process' environment. Note that
17011701+#: environment variables are expanded recursively, for example::
17021702+17031703+#: env VAR1=a
17041704+#: env VAR2=${HOME}/${VAR1}/b
17051705+17061706+#: The value of VAR2 will be <path to home directory>/a/b.
17071707+17081708+# filter_notification
17091709+17101710+#: Specify rules to filter out notifications sent by applications
17111711+#: running in kitty. Can be specified multiple times to create
17121712+#: multiple filter rules. A rule specification is of the form
17131713+#: field:regexp. A filter rule can match on any of the fields: title,
17141714+#: body, app, type. The special value of all filters out all
17151715+#: notifications. Rules can be combined using Boolean operators. Some
17161716+#: examples::
17171717+17181718+#: filter_notification title:hello or body:"abc.*def"
17191719+#: # filter out notification from vim except for ones about updates, (?i)
17201720+#: # makes matching case insensitive.
17211721+#: filter_notification app:"[ng]?vim" and not body:"(?i)update"
17221722+#: # filter out all notifications
17231723+#: filter_notification all
17241724+17251725+#: The field app is the name of the application sending the
17261726+#: notification and type is the type of the notification. Not all
17271727+#: applications will send these fields, so you can also match on the
17281728+#: title and body of the notification text. More sophisticated
17291729+#: programmatic filtering and custom actions on notifications can be
17301730+#: done by creating a notifications.py file in the kitty config
17311731+#: directory (~/.config/kitty). An annotated sample is available
17321732+#: <https://github.com/kovidgoyal/kitty/blob/master/docs/notifications.py>.
17331733+17341734+# watcher
17351735+17361736+#: Path to python file which will be loaded for watchers
17371737+#: <https://sw.kovidgoyal.net/kitty/launch/#watchers>. Can be
17381738+#: specified more than once to load multiple watchers. The watchers
17391739+#: will be added to every kitty window. Relative paths are resolved
17401740+#: relative to the kitty config directory. Note that reloading the
17411741+#: config will only affect windows created after the reload.
17421742+17431743+# exe_search_path
17441744+17451745+#: Control where kitty finds the programs to run. The default search
17461746+#: order is: First search the system wide PATH, then ~/.local/bin and
17471747+#: ~/bin. If still not found, the PATH defined in the login shell
17481748+#: after sourcing all its startup files is tried. Finally, if present,
17491749+#: the PATH specified by the env option is tried.
17501750+17511751+#: This option allows you to prepend, append, or remove paths from
17521752+#: this search order. It can be specified multiple times for multiple
17531753+#: paths. A simple path will be prepended to the search order. A path
17541754+#: that starts with the + sign will be append to the search order,
17551755+#: after ~/bin above. A path that starts with the - sign will be
17561756+#: removed from the entire search order. For example::
17571757+17581758+#: exe_search_path /some/prepended/path
17591759+#: exe_search_path +/some/appended/path
17601760+#: exe_search_path -/some/excluded/path
17611761+17621762+# update_check_interval 24
17631763+17641764+#: The interval to periodically check if an update to kitty is
17651765+#: available (in hours). If an update is found, a system notification
17661766+#: is displayed informing you of the available update. The default is
17671767+#: to check every 24 hours, set to zero to disable. Update checking is
17681768+#: only done by the official binary builds. Distro packages or source
17691769+#: builds do not do update checking. Changing this option by reloading
17701770+#: the config is not supported.
17711771+17721772+# startup_session none
17731773+17741774+#: Path to a session file to use for all kitty instances. Can be
17751775+#: overridden by using the kitty --session =none command line option
17761776+#: for individual instances. See sessions
17771777+#: <https://sw.kovidgoyal.net/kitty/overview/#sessions> in the kitty
17781778+#: documentation for details. Note that relative paths are interpreted
17791779+#: with respect to the kitty config directory. Environment variables
17801780+#: in the path are expanded. Changing this option by reloading the
17811781+#: config is not supported. Note that if kitty is invoked with command
17821782+#: line arguments specifying a command to run, this option is ignored.
17831783+17841784+# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask
17851785+17861786+#: Allow programs running in kitty to read and write from the
17871787+#: clipboard. You can control exactly which actions are allowed. The
17881788+#: possible actions are: write-clipboard, read-clipboard, write-
17891789+#: primary, read-primary, read-clipboard-ask, read-primary-ask. The
17901790+#: default is to allow writing to the clipboard and primary selection
17911791+#: and to ask for permission when a program tries to read from the
17921792+#: clipboard. Note that disabling the read confirmation is a security
17931793+#: risk as it means that any program, even the ones running on a
17941794+#: remote server via SSH can read your clipboard. See also
17951795+#: clipboard_max_size.
17961796+17971797+# clipboard_max_size 512
17981798+17991799+#: The maximum size (in MB) of data from programs running in kitty
18001800+#: that will be stored for writing to the system clipboard. A value of
18011801+#: zero means no size limit is applied. See also clipboard_control.
18021802+18031803+# file_transfer_confirmation_bypass
18041804+18051805+#: The password that can be supplied to the file transfer kitten
18061806+#: <https://sw.kovidgoyal.net/kitty/kittens/transfer/> to skip the
18071807+#: transfer confirmation prompt. This should only be used when
18081808+#: initiating transfers from trusted computers, over trusted networks
18091809+#: or encrypted transports, as it allows any programs running on the
18101810+#: remote machine to read/write to the local filesystem, without
18111811+#: permission.
18121812+18131813+# allow_hyperlinks yes
18141814+18151815+#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8
18161816+#: escape sequences are ignored. Otherwise they become clickable
18171817+#: links, that you can click with the mouse or by using the hints
18181818+#: kitten <https://sw.kovidgoyal.net/kitty/kittens/hints/>. The
18191819+#: special value of ask means that kitty will ask before opening the
18201820+#: link when clicked.
18211821+18221822+# shell_integration enabled
18231823+18241824+#: Enable shell integration on supported shells. This enables features
18251825+#: such as jumping to previous prompts, browsing the output of the
18261826+#: previous command in a pager, etc. on supported shells. Set to
18271827+#: disabled to turn off shell integration, completely. It is also
18281828+#: possible to disable individual features, set to a space separated
18291829+#: list of these values: no-rc, no-cursor, no-title, no-cwd, no-
18301830+#: prompt-mark, no-complete, no-sudo. See Shell integration
18311831+#: <https://sw.kovidgoyal.net/kitty/shell-integration/> for details.
18321832+18331833+# allow_cloning ask
18341834+18351835+#: Control whether programs running in the terminal can request new
18361836+#: windows to be created. The canonical example is clone-in-kitty
18371837+#: <https://sw.kovidgoyal.net/kitty/shell-integration/#clone-shell>.
18381838+#: By default, kitty will ask for permission for each clone request.
18391839+#: Allowing cloning unconditionally gives programs running in the
18401840+#: terminal (including over SSH) permission to execute arbitrary code,
18411841+#: as the user who is running the terminal, on the computer that the
18421842+#: terminal is running on.
18431843+18441844+# clone_source_strategies venv,conda,env_var,path
18451845+18461846+#: Control what shell code is sourced when running clone-in-kitty in
18471847+#: the newly cloned window. The supported strategies are:
18481848+18491849+#: venv
18501850+#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the
18511851+#: Python stdlib venv module and allows cloning venvs automatically.
18521852+#: conda
18531853+#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual
18541854+#: environments created by conda.
18551855+#: env_var
18561856+#: Execute the contents of the environment variable
18571857+#: KITTY_CLONE_SOURCE_CODE with eval.
18581858+#: path
18591859+#: Source the file pointed to by the environment variable
18601860+#: KITTY_CLONE_SOURCE_PATH.
18611861+18621862+#: This option must be a comma separated list of the above values.
18631863+#: Only the first valid match, in the order specified, is sourced.
18641864+18651865+# notify_on_cmd_finish never
18661866+18671867+#: Show a desktop notification when a long-running command finishes
18681868+#: (needs shell_integration). The possible values are:
18691869+18701870+#: never
18711871+#: Never send a notification.
18721872+18731873+#: unfocused
18741874+#: Only send a notification when the window does not have keyboard focus.
18751875+18761876+#: invisible
18771877+#: Only send a notification when the window both is unfocused and not visible
18781878+#: to the user, for example, because it is in an inactive tab or its OS window
18791879+#: is not currently visible (on platforms that support OS window visibility querying
18801880+#: this considers an OS Window visible iff it is active).
18811881+18821882+#: always
18831883+#: Always send a notification, regardless of window state.
18841884+18851885+#: There are two optional arguments:
18861886+18871887+#: First, the minimum duration for what is considered a long running
18881888+#: command. The default is 5 seconds. Specify a second argument to set
18891889+#: the duration. For example: invisible 15. Do not set the value too
18901890+#: small, otherwise a command that launches a new OS Window and exits
18911891+#: will spam a notification.
18921892+18931893+#: Second, the action to perform. The default is notify. The possible
18941894+#: values are:
18951895+18961896+#: notify
18971897+#: Send a desktop notification. The subsequent arguments are optional and specify when
18981898+#: the notification is automatically cleared. The set of possible events when the notification is
18991899+#: cleared are: focus and next. focus means that when the notification
19001900+#: policy is unfocused or invisible the notification is automatically cleared
19011901+#: when the window regains focus. The value of next means that the previous notification
19021902+#: is cleared when the next notification is shown. The default when no arguments are specified
19031903+#: is: focus next.
19041904+19051905+#: bell
19061906+#: Ring the terminal bell.
19071907+19081908+#: command
19091909+#: Run a custom command. All subsequent arguments are the cmdline to run.
19101910+19111911+#: Some more examples::
19121912+19131913+#: # Send a notification when a command takes more than 5 seconds in an unfocused window
19141914+#: notify_on_cmd_finish unfocused
19151915+#: # Send a notification when a command takes more than 10 seconds in a invisible window
19161916+#: notify_on_cmd_finish invisible 10.0
19171917+#: # Ring a bell when a command takes more than 10 seconds in a invisible window
19181918+#: notify_on_cmd_finish invisible 10.0 bell
19191919+#: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window
19201920+#: # Here %c is replaced by the current command line and %s by the job exit code
19211921+#: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c
19221922+#: # Do not clear previous notification when next command finishes or window regains focus
19231923+#: notify_on_cmd_finish invisible 5.0 notify
19241924+19251925+# term xterm-kitty
19261926+19271927+#: The value of the TERM environment variable to set. Changing this
19281928+#: can break many terminal programs, only change it if you know what
19291929+#: you are doing, not because you read some advice on "Stack Overflow"
19301930+#: to change it. The TERM variable is used by various programs to get
19311931+#: information about the capabilities and behavior of the terminal. If
19321932+#: you change it, depending on what programs you run, and how
19331933+#: different the terminal you are changing it to is, various things
19341934+#: from key-presses, to colors, to various advanced features may not
19351935+#: work. Changing this option by reloading the config will only affect
19361936+#: newly created windows.
19371937+19381938+# terminfo_type path
19391939+19401940+#: The value of the TERMINFO environment variable to set. This
19411941+#: variable is used by programs running in the terminal to search for
19421942+#: terminfo databases. The default value of path causes kitty to set
19431943+#: it to a filesystem location containing the kitty terminfo database.
19441944+#: A value of direct means put the entire database into the env var
19451945+#: directly. This can be useful when connecting to containers, for
19461946+#: example. But, note that not all software supports this. A value of
19471947+#: none means do not touch the variable.
19481948+19491949+# forward_stdio no
19501950+19511951+#: Forward STDOUT and STDERR of the kitty process to child processes.
19521952+#: This is useful for debugging as it allows child processes to print
19531953+#: to kitty's STDOUT directly. For example, echo hello world
19541954+#: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent
19551955+#: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment
19561956+#: variable so child processes know about the forwarding. Note that on
19571957+#: macOS this prevents the shell from being run via the login utility
19581958+#: so getlogin() will not work in programs run in this session.
19591959+19601960+# menu_map
19611961+19621962+#: Specify entries for various menus in kitty. Currently only the
19631963+#: global menubar on macOS is supported. For example::
19641964+19651965+#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world"
19661966+19671967+#: This will create a menu entry named "Launch something special" in
19681968+#: an "Actions" menu in the macOS global menubar. Sub-menus can be
19691969+#: created by adding more levels separated by the :: characters.
19701970+19711971+#: }}}
19721972+19731973+#: OS specific tweaks {{{
19741974+19751975+# wayland_titlebar_color system
19761976+19771977+#: The color of the kitty window's titlebar on Wayland systems with
19781978+#: client side window decorations such as GNOME. A value of system
19791979+#: means to use the default system colors, a value of background means
19801980+#: to use the background color of the currently active kitty window
19811981+#: and finally you can use an arbitrary color, such as #12af59 or red.
19821982+19831983+# macos_titlebar_color system
19841984+19851985+#: The color of the kitty window's titlebar on macOS. A value of
19861986+#: system means to use the default system color, light or dark can
19871987+#: also be used to set it explicitly. A value of background means to
19881988+#: use the background color of the currently active window and finally
19891989+#: you can use an arbitrary color, such as #12af59 or red. WARNING:
19901990+#: This option works by using a hack when arbitrary color (or
19911991+#: background) is configured, as there is no proper Cocoa API for it.
19921992+#: It sets the background color of the entire window and makes the
19931993+#: titlebar transparent. As such it is incompatible with
19941994+#: background_opacity. If you want to use both, you are probably
19951995+#: better off just hiding the titlebar with hide_window_decorations.
19961996+19971997+# macos_option_as_alt no
19981998+19991999+#: Use the Option key as an Alt key on macOS. With this set to no,
20002000+#: kitty will use the macOS native Option+Key to enter Unicode
20012001+#: character behavior. This will break any Alt+Key keyboard shortcuts
20022002+#: in your terminal programs, but you can use the macOS Unicode input
20032003+#: technique. You can use the values: left, right or both to use only
20042004+#: the left, right or both Option keys as Alt, instead. Note that
20052005+#: kitty itself always treats Option the same as Alt. This means you
20062006+#: cannot use this option to configure different kitty shortcuts for
20072007+#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using
20082008+#: Option/Alt+Key will take priority, so that any such key presses
20092009+#: will not be passed to terminal programs running inside kitty.
20102010+#: Changing this option by reloading the config is not supported.
20112011+20122012+# macos_hide_from_tasks no
20132013+20142014+#: Hide the kitty window from running tasks on macOS (⌘+Tab and the
20152015+#: Dock). Changing this option by reloading the config is not
20162016+#: supported.
20172017+20182018+# macos_quit_when_last_window_closed no
20192019+20202020+#: Have kitty quit when all the top-level windows are closed on macOS.
20212021+#: By default, kitty will stay running, even with no open windows, as
20222022+#: is the expected behavior on macOS.
20232023+20242024+# macos_window_resizable yes
20252025+20262026+#: Disable this if you want kitty top-level OS windows to not be
20272027+#: resizable on macOS.
20282028+20292029+# macos_thicken_font 0
20302030+20312031+#: Draw an extra border around the font with the given width, to
20322032+#: increase legibility at small font sizes on macOS. For example, a
20332033+#: value of 0.75 will result in rendering that looks similar to sub-
20342034+#: pixel antialiasing at common font sizes. Note that in modern kitty,
20352035+#: this option is obsolete (although still supported). Consider using
20362036+#: text_composition_strategy instead.
20372037+20382038+# macos_traditional_fullscreen no
20392039+20402040+#: Use the macOS traditional full-screen transition, that is faster,
20412041+#: but less pretty.
20422042+20432043+# macos_show_window_title_in all
20442044+20452045+#: Control where the window title is displayed on macOS. A value of
20462046+#: window will show the title of the currently active window at the
20472047+#: top of the macOS window. A value of menubar will show the title of
20482048+#: the currently active window in the macOS global menu bar, making
20492049+#: use of otherwise wasted space. A value of all will show the title
20502050+#: in both places, and none hides the title. See
20512051+#: macos_menubar_title_max_length for how to control the length of the
20522052+#: title in the menu bar.
20532053+20542054+# macos_menubar_title_max_length 0
20552055+20562056+#: The maximum number of characters from the window title to show in
20572057+#: the macOS global menu bar. Values less than one means that there is
20582058+#: no maximum limit.
20592059+20602060+# macos_custom_beam_cursor no
20612061+20622062+#: Use a custom mouse cursor for macOS that is easier to see on both
20632063+#: light and dark backgrounds. Nowadays, the default macOS cursor
20642064+#: already comes with a white border. WARNING: this might make your
20652065+#: mouse cursor invisible on dual GPU machines. Changing this option
20662066+#: by reloading the config is not supported.
20672067+20682068+# macos_colorspace srgb
20692069+20702070+#: The colorspace in which to interpret terminal colors. The default
20712071+#: of srgb will cause colors to match those seen in web browsers. The
20722072+#: value of default will use whatever the native colorspace of the
20732073+#: display is. The value of displayp3 will use Apple's special
20742074+#: snowflake display P3 color space, which will result in over
20752075+#: saturated (brighter) colors with some color shift. Reloading
20762076+#: configuration will change this value only for newly created OS
20772077+#: windows.
20782078+20792079+# linux_display_server auto
20802080+20812081+#: Choose between Wayland and X11 backends. By default, an appropriate
20822082+#: backend based on the system state is chosen automatically. Set it
20832083+#: to x11 or wayland to force the choice. Changing this option by
20842084+#: reloading the config is not supported.
20852085+20862086+# wayland_enable_ime yes
20872087+20882088+#: Enable Input Method Extension on Wayland. This is typically used
20892089+#: for inputting text in East Asian languages. However, its
20902090+#: implementation in Wayland is often buggy and introduces latency
20912091+#: into the input loop, so disable this if you know you dont need it.
20922092+#: Changing this option by reloading the config is not supported, it
20932093+#: will not have any effect.
20942094+20952095+#: }}}
20962096+20972097+#: Keyboard shortcuts {{{
20982098+20992099+#: Keys are identified simply by their lowercase Unicode characters.
21002100+#: For example: a for the A key, [ for the left square bracket key,
21012101+#: etc. For functional keys, such as Enter or Escape, the names are
21022102+#: present at Functional key definitions
21032103+#: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>.
21042104+#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt
21052105+#: (opt, option, ⌥), super (cmd, command, ⌘).
21062106+21072107+#: Simple shortcut mapping is done with the map directive. For full
21082108+#: details on advanced mapping including modal and per application
21092109+#: maps, see mapping <https://sw.kovidgoyal.net/kitty/mapping/>. Some
21102110+#: quick examples to illustrate common tasks::
21112111+21122112+#: # unmap a keyboard shortcut, passing it to the program running in kitty
21132113+#: map kitty_mod+space
21142114+#: # completely ignore a keyboard event
21152115+#: map ctrl+alt+f1 discard_event
21162116+#: # combine multiple actions
21172117+#: map kitty_mod+e combine : new_window : next_layout
21182118+#: # multi-key shortcuts
21192119+#: map ctrl+x>ctrl+y>z action
21202120+21212121+#: The full list of actions that can be mapped to key presses is
21222122+#: available here <https://sw.kovidgoyal.net/kitty/actions/>.
21232123+21242124+# kitty_mod ctrl+shift
21252125+21262126+#: Special modifier key alias for default shortcuts. You can change
21272127+#: the value of this option to alter all default shortcuts that use
21282128+#: kitty_mod.
21292129+21302130+# clear_all_shortcuts no
21312131+21322132+#: Remove all shortcut definitions up to this point. Useful, for
21332133+#: instance, to remove the default shortcuts.
21342134+21352135+# action_alias
21362136+21372137+#: E.g. action_alias launch_tab launch --type=tab --cwd=current
21382138+21392139+#: Define action aliases to avoid repeating the same options in
21402140+#: multiple mappings. Aliases can be defined for any action and will
21412141+#: be expanded recursively. For example, the above alias allows you to
21422142+#: create mappings to launch a new tab in the current working
21432143+#: directory without duplication::
21442144+21452145+#: map f1 launch_tab vim
21462146+#: map f2 launch_tab emacs
21472147+21482148+#: Similarly, to alias kitten invocation::
21492149+21502150+#: action_alias hints kitten hints --hints-offset=0
21512151+21522152+# kitten_alias
21532153+21542154+#: E.g. kitten_alias hints hints --hints-offset=0
21552155+21562156+#: Like action_alias above, but specifically for kittens. Generally,
21572157+#: prefer to use action_alias. This option is a legacy version,
21582158+#: present for backwards compatibility. It causes all invocations of
21592159+#: the aliased kitten to be substituted. So the example above will
21602160+#: cause all invocations of the hints kitten to have the --hints-
21612161+#: offset=0 option applied.
21622162+21632163+#: Clipboard {{{
21642164+21652165+#: Copy to clipboard
21662166+21672167+# map kitty_mod+c copy_to_clipboard
21682168+# map cmd+c copy_to_clipboard
21692169+21702170+#:: There is also a copy_or_interrupt action that can be optionally
21712171+#:: mapped to Ctrl+C. It will copy only if there is a selection and
21722172+#:: send an interrupt otherwise. Similarly,
21732173+#:: copy_and_clear_or_interrupt will copy and clear the selection or
21742174+#:: send an interrupt if there is no selection.
21752175+21762176+#: Paste from clipboard
21772177+21782178+# map kitty_mod+v paste_from_clipboard
21792179+# map cmd+v paste_from_clipboard
21802180+21812181+#: Paste from selection
21822182+21832183+# map kitty_mod+s paste_from_selection
21842184+# map shift+insert paste_from_selection
21852185+21862186+#: Pass selection to program
21872187+21882188+# map kitty_mod+o pass_selection_to_program
21892189+21902190+#:: You can also pass the contents of the current selection to any
21912191+#:: program with pass_selection_to_program. By default, the system's
21922192+#:: open program is used, but you can specify your own, the selection
21932193+#:: will be passed as a command line argument to the program. For
21942194+#:: example::
21952195+21962196+#:: map kitty_mod+o pass_selection_to_program firefox
21972197+21982198+#:: You can pass the current selection to a terminal program running
21992199+#:: in a new kitty window, by using the @selection placeholder::
22002200+22012201+#:: map kitty_mod+y new_window less @selection
22022202+22032203+#: }}}
22042204+22052205+#: Scrolling {{{
22062206+22072207+#: Scroll line up
22082208+22092209+# map kitty_mod+up scroll_line_up
22102210+# map kitty_mod+k scroll_line_up
22112211+# map opt+cmd+page_up scroll_line_up
22122212+# map cmd+up scroll_line_up
22132213+22142214+#: Scroll line down
22152215+22162216+# map kitty_mod+down scroll_line_down
22172217+# map kitty_mod+j scroll_line_down
22182218+# map opt+cmd+page_down scroll_line_down
22192219+# map cmd+down scroll_line_down
22202220+22212221+#: Scroll page up
22222222+22232223+# map kitty_mod+page_up scroll_page_up
22242224+# map cmd+page_up scroll_page_up
22252225+22262226+#: Scroll page down
22272227+22282228+# map kitty_mod+page_down scroll_page_down
22292229+# map cmd+page_down scroll_page_down
22302230+22312231+#: Scroll to top
22322232+22332233+# map kitty_mod+home scroll_home
22342234+# map cmd+home scroll_home
22352235+22362236+#: Scroll to bottom
22372237+22382238+# map kitty_mod+end scroll_end
22392239+# map cmd+end scroll_end
22402240+22412241+#: Scroll to previous shell prompt
22422242+22432243+# map kitty_mod+z scroll_to_prompt -1
22442244+22452245+#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last
22462246+#:: jumped to or the last clicked position. Requires shell
22472247+#:: integration <https://sw.kovidgoyal.net/kitty/shell-integration/>
22482248+#:: to work.
22492249+22502250+#: Scroll to next shell prompt
22512251+22522252+# map kitty_mod+x scroll_to_prompt 1
22532253+22542254+#: Browse scrollback buffer in pager
22552255+22562256+# map kitty_mod+h show_scrollback
22572257+22582258+#:: You can pipe the contents of the current screen and history
22592259+#:: buffer as STDIN to an arbitrary program using launch --stdin-
22602260+#:: source. For example, the following opens the scrollback buffer in
22612261+#:: less in an overlay window::
22622262+22632263+#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
22642264+22652265+#:: For more details on piping screen and buffer contents to external
22662266+#:: programs, see launch <https://sw.kovidgoyal.net/kitty/launch/>.
22672267+22682268+#: Browse output of the last shell command in pager
22692269+22702270+# map kitty_mod+g show_last_command_output
22712271+22722272+#:: You can also define additional shortcuts to get the command
22732273+#:: output. For example, to get the first command output on screen::
22742274+22752275+#:: map f1 show_first_command_output_on_screen
22762276+22772277+#:: To get the command output that was last accessed by a keyboard
22782278+#:: action or mouse action::
22792279+22802280+#:: map f1 show_last_visited_command_output
22812281+22822282+#:: You can pipe the output of the last command run in the shell
22832283+#:: using the launch action. For example, the following opens the
22842284+#:: output in less in an overlay window::
22852285+22862286+#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R
22872287+22882288+#:: To get the output of the first command on the screen, use
22892289+#:: @first_cmd_output_on_screen. To get the output of the last jumped
22902290+#:: to command, use @last_visited_cmd_output.
22912291+22922292+#:: Requires shell integration
22932293+#:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work.
22942294+22952295+#: }}}
22962296+22972297+#: Window management {{{
22982298+22992299+#: New window
23002300+23012301+# map kitty_mod+enter new_window
23022302+# map cmd+enter new_window
23032303+23042304+#:: You can open a new kitty window running an arbitrary program, for
23052305+#:: example::
23062306+23072307+#:: map kitty_mod+y launch mutt
23082308+23092309+#:: You can open a new window with the current working directory set
23102310+#:: to the working directory of the current window using::
23112311+23122312+#:: map ctrl+alt+enter launch --cwd=current
23132313+23142314+#:: You can open a new window that is allowed to control kitty via
23152315+#:: the kitty remote control facility with launch --allow-remote-
23162316+#:: control. Any programs running in that window will be allowed to
23172317+#:: control kitty. For example::
23182318+23192319+#:: map ctrl+enter launch --allow-remote-control some_program
23202320+23212321+#:: You can open a new window next to the currently active window or
23222322+#:: as the first window, with::
23232323+23242324+#:: map ctrl+n launch --location=neighbor
23252325+#:: map ctrl+f launch --location=first
23262326+23272327+#:: For more details, see launch
23282328+#:: <https://sw.kovidgoyal.net/kitty/launch/>.
23292329+23302330+#: New OS window
23312331+23322332+# map kitty_mod+n new_os_window
23332333+# map cmd+n new_os_window
23342334+23352335+#:: Works like new_window above, except that it opens a top-level OS
23362336+#:: window. In particular you can use new_os_window_with_cwd to open
23372337+#:: a window with the current working directory.
23382338+23392339+#: Close window
23402340+23412341+# map kitty_mod+w close_window
23422342+# map shift+cmd+d close_window
23432343+23442344+#: Next window
23452345+23462346+# map kitty_mod+] next_window
23472347+23482348+#: Previous window
23492349+23502350+# map kitty_mod+[ previous_window
23512351+23522352+#: Move window forward
23532353+23542354+# map kitty_mod+f move_window_forward
23552355+23562356+#: Move window backward
23572357+23582358+# map kitty_mod+b move_window_backward
23592359+23602360+#: Move window to top
23612361+23622362+# map kitty_mod+` move_window_to_top
23632363+23642364+#: Start resizing window
23652365+23662366+# map kitty_mod+r start_resizing_window
23672367+# map cmd+r start_resizing_window
23682368+23692369+#: First window
23702370+23712371+# map kitty_mod+1 first_window
23722372+# map cmd+1 first_window
23732373+23742374+#: Second window
23752375+23762376+# map kitty_mod+2 second_window
23772377+# map cmd+2 second_window
23782378+23792379+#: Third window
23802380+23812381+# map kitty_mod+3 third_window
23822382+# map cmd+3 third_window
23832383+23842384+#: Fourth window
23852385+23862386+# map kitty_mod+4 fourth_window
23872387+# map cmd+4 fourth_window
23882388+23892389+#: Fifth window
23902390+23912391+# map kitty_mod+5 fifth_window
23922392+# map cmd+5 fifth_window
23932393+23942394+#: Sixth window
23952395+23962396+# map kitty_mod+6 sixth_window
23972397+# map cmd+6 sixth_window
23982398+23992399+#: Seventh window
24002400+24012401+# map kitty_mod+7 seventh_window
24022402+# map cmd+7 seventh_window
24032403+24042404+#: Eighth window
24052405+24062406+# map kitty_mod+8 eighth_window
24072407+# map cmd+8 eighth_window
24082408+24092409+#: Ninth window
24102410+24112411+# map kitty_mod+9 ninth_window
24122412+# map cmd+9 ninth_window
24132413+24142414+#: Tenth window
24152415+24162416+# map kitty_mod+0 tenth_window
24172417+24182418+#: Visually select and focus window
24192419+24202420+# map kitty_mod+f7 focus_visible_window
24212421+24222422+#:: Display overlay numbers and alphabets on the window, and switch
24232423+#:: the focus to the window when you press the key. When there are
24242424+#:: only two windows, the focus will be switched directly without
24252425+#:: displaying the overlay. You can change the overlay characters and
24262426+#:: their order with option visual_window_select_characters.
24272427+24282428+#: Visually swap window with another
24292429+24302430+# map kitty_mod+f8 swap_with_window
24312431+24322432+#:: Works like focus_visible_window above, but swaps the window.
24332433+24342434+#: }}}
24352435+24362436+#: Tab management {{{
24372437+24382438+#: Next tab
24392439+24402440+# map kitty_mod+right next_tab
24412441+# map shift+cmd+] next_tab
24422442+# map ctrl+tab next_tab
24432443+24442444+#: Previous tab
24452445+24462446+# map kitty_mod+left previous_tab
24472447+# map shift+cmd+[ previous_tab
24482448+# map ctrl+shift+tab previous_tab
24492449+24502450+#: New tab
24512451+24522452+# map kitty_mod+t new_tab
24532453+# map cmd+t new_tab
24542454+24552455+#: Close tab
24562456+24572457+# map kitty_mod+q close_tab
24582458+# map cmd+w close_tab
24592459+24602460+#: Close OS window
24612461+24622462+# map shift+cmd+w close_os_window
24632463+24642464+#: Move tab forward
24652465+24662466+# map kitty_mod+. move_tab_forward
24672467+24682468+#: Move tab backward
24692469+24702470+# map kitty_mod+, move_tab_backward
24712471+24722472+#: Set tab title
24732473+24742474+# map kitty_mod+alt+t set_tab_title
24752475+# map shift+cmd+i set_tab_title
24762476+24772477+24782478+#: You can also create shortcuts to go to specific tabs, with 1 being
24792479+#: the first tab, 2 the second tab and -1 being the previously active
24802480+#: tab, -2 being the tab active before the previously active tab and
24812481+#: so on. Any number larger than the number of tabs goes to the last
24822482+#: tab and any number less than the number of previously used tabs in
24832483+#: the history goes to the oldest previously used tab in the history::
24842484+24852485+#: map ctrl+alt+1 goto_tab 1
24862486+#: map ctrl+alt+2 goto_tab 2
24872487+24882488+#: Just as with new_window above, you can also pass the name of
24892489+#: arbitrary commands to run when using new_tab and new_tab_with_cwd.
24902490+#: Finally, if you want the new tab to open next to the current tab
24912491+#: rather than at the end of the tabs list, use::
24922492+24932493+#: map ctrl+t new_tab !neighbor [optional cmd to run]
24942494+#: }}}
24952495+24962496+#: Layout management {{{
24972497+24982498+#: Next layout
24992499+25002500+# map kitty_mod+l next_layout
25012501+25022502+25032503+#: You can also create shortcuts to switch to specific layouts::
25042504+25052505+#: map ctrl+alt+t goto_layout tall
25062506+#: map ctrl+alt+s goto_layout stack
25072507+25082508+#: Similarly, to switch back to the previous layout::
25092509+25102510+#: map ctrl+alt+p last_used_layout
25112511+25122512+#: There is also a toggle_layout action that switches to the named
25132513+#: layout or back to the previous layout if in the named layout.
25142514+#: Useful to temporarily "zoom" the active window by switching to the
25152515+#: stack layout::
25162516+25172517+#: map ctrl+alt+z toggle_layout stack
25182518+#: }}}
25192519+25202520+#: Font sizes {{{
25212521+25222522+#: You can change the font size for all top-level kitty OS windows at
25232523+#: a time or only the current one.
25242524+25252525+#: Increase font size
25262526+25272527+# map kitty_mod+equal change_font_size all +2.0
25282528+# map kitty_mod+plus change_font_size all +2.0
25292529+# map kitty_mod+kp_add change_font_size all +2.0
25302530+# map cmd+plus change_font_size all +2.0
25312531+# map cmd+equal change_font_size all +2.0
25322532+# map shift+cmd+equal change_font_size all +2.0
25332533+25342534+#: Decrease font size
25352535+25362536+# map kitty_mod+minus change_font_size all -2.0
25372537+# map kitty_mod+kp_subtract change_font_size all -2.0
25382538+# map cmd+minus change_font_size all -2.0
25392539+# map shift+cmd+minus change_font_size all -2.0
25402540+25412541+#: Reset font size
25422542+25432543+# map kitty_mod+backspace change_font_size all 0
25442544+# map cmd+0 change_font_size all 0
25452545+25462546+25472547+#: To setup shortcuts for specific font sizes::
25482548+25492549+#: map kitty_mod+f6 change_font_size all 10.0
25502550+25512551+#: To setup shortcuts to change only the current OS window's font
25522552+#: size::
25532553+25542554+#: map kitty_mod+f6 change_font_size current 10.0
25552555+25562556+#: To setup shortcuts to multiply/divide the font size::
25572557+25582558+#: map kitty_mod+f6 change_font_size all *2.0
25592559+#: map kitty_mod+f6 change_font_size all /2.0
25602560+#: }}}
25612561+25622562+#: Select and act on visible text {{{
25632563+25642564+#: Use the hints kitten to select text and either pass it to an
25652565+#: external program or insert it into the terminal or copy it to the
25662566+#: clipboard.
25672567+25682568+#: Open URL
25692569+25702570+# map kitty_mod+e open_url_with_hints
25712571+25722572+#:: Open a currently visible URL using the keyboard. The program used
25732573+#:: to open the URL is specified in open_url_with.
25742574+25752575+#: Insert selected path
25762576+25772577+# map kitty_mod+p>f kitten hints --type path --program -
25782578+25792579+#:: Select a path/filename and insert it into the terminal. Useful,
25802580+#:: for instance to run git commands on a filename output from a
25812581+#:: previous git command.
25822582+25832583+#: Open selected path
25842584+25852585+# map kitty_mod+p>shift+f kitten hints --type path
25862586+25872587+#:: Select a path/filename and open it with the default open program.
25882588+25892589+#: Insert selected line
25902590+25912591+# map kitty_mod+p>l kitten hints --type line --program -
25922592+25932593+#:: Select a line of text and insert it into the terminal. Useful for
25942594+#:: the output of things like: `ls -1`.
25952595+25962596+#: Insert selected word
25972597+25982598+# map kitty_mod+p>w kitten hints --type word --program -
25992599+26002600+#:: Select words and insert into terminal.
26012601+26022602+#: Insert selected hash
26032603+26042604+# map kitty_mod+p>h kitten hints --type hash --program -
26052605+26062606+#:: Select something that looks like a hash and insert it into the
26072607+#:: terminal. Useful with git, which uses SHA1 hashes to identify
26082608+#:: commits.
26092609+26102610+#: Open the selected file at the selected line
26112611+26122612+# map kitty_mod+p>n kitten hints --type linenum
26132613+26142614+#:: Select something that looks like filename:linenum and open it in
26152615+#:: your default editor at the specified line number.
26162616+26172617+#: Open the selected hyperlink
26182618+26192619+# map kitty_mod+p>y kitten hints --type hyperlink
26202620+26212621+#:: Select a hyperlink (i.e. a URL that has been marked as such by
26222622+#:: the terminal program, for example, by `ls --hyperlink=auto`).
26232623+26242624+26252625+#: The hints kitten has many more modes of operation that you can map
26262626+#: to different shortcuts. For a full description see hints kitten
26272627+#: <https://sw.kovidgoyal.net/kitty/kittens/hints/>.
26282628+#: }}}
26292629+26302630+#: Miscellaneous {{{
26312631+26322632+#: Show documentation
26332633+26342634+# map kitty_mod+f1 show_kitty_doc overview
26352635+26362636+#: Toggle fullscreen
26372637+26382638+# map kitty_mod+f11 toggle_fullscreen
26392639+# map ctrl+cmd+f toggle_fullscreen
26402640+26412641+#: Toggle maximized
26422642+26432643+# map kitty_mod+f10 toggle_maximized
26442644+26452645+#: Toggle macOS secure keyboard entry
26462646+26472647+# map opt+cmd+s toggle_macos_secure_keyboard_entry
26482648+26492649+#: Unicode input
26502650+26512651+# map kitty_mod+u kitten unicode_input
26522652+# map ctrl+cmd+space kitten unicode_input
26532653+26542654+#: Edit config file
26552655+26562656+# map kitty_mod+f2 edit_config_file
26572657+# map cmd+, edit_config_file
26582658+26592659+#: Open the kitty command shell
26602660+26612661+# map kitty_mod+escape kitty_shell window
26622662+26632663+#:: Open the kitty shell in a new window / tab / overlay / os_window
26642664+#:: to control kitty using commands.
26652665+26662666+#: Increase background opacity
26672667+26682668+# map kitty_mod+a>m set_background_opacity +0.1
26692669+26702670+#: Decrease background opacity
26712671+26722672+# map kitty_mod+a>l set_background_opacity -0.1
26732673+26742674+#: Make background fully opaque
26752675+26762676+# map kitty_mod+a>1 set_background_opacity 1
26772677+26782678+#: Reset background opacity
26792679+26802680+# map kitty_mod+a>d set_background_opacity default
26812681+26822682+#: Reset the terminal
26832683+26842684+# map kitty_mod+delete clear_terminal reset active
26852685+# map opt+cmd+r clear_terminal reset active
26862686+26872687+#:: You can create shortcuts to clear/reset the terminal. For
26882688+#:: example::
26892689+26902690+#:: # Reset the terminal
26912691+#:: map f1 clear_terminal reset active
26922692+#:: # Clear the terminal screen by erasing all contents
26932693+#:: map f1 clear_terminal clear active
26942694+#:: # Clear the terminal scrollback by erasing it
26952695+#:: map f1 clear_terminal scrollback active
26962696+#:: # Scroll the contents of the screen into the scrollback
26972697+#:: map f1 clear_terminal scroll active
26982698+#:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration)
26992699+#:: map f1 clear_terminal to_cursor active
27002700+#:: # Same as above except cleared lines are moved into scrollback
27012701+#:: map f1 clear_terminal to_cursor_scroll active
27022702+27032703+#:: If you want to operate on all kitty windows instead of just the
27042704+#:: current one, use all instead of active.
27052705+27062706+#:: Some useful functions that can be defined in the shell rc files
27072707+#:: to perform various kinds of clearing of the current window:
27082708+27092709+#:: .. code-block:: sh
27102710+27112711+#:: clear-only-screen() {
27122712+#:: printf "\e[H\e[2J"
27132713+#:: }
27142714+27152715+#:: clear-screen-and-scrollback() {
27162716+#:: printf "\e[H\e[3J"
27172717+#:: }
27182718+27192719+#:: clear-screen-saving-contents-in-scrollback() {
27202720+#:: printf "\e[H\e[22J"
27212721+#:: }
27222722+27232723+#:: For instance, using these escape codes, it is possible to remap
27242724+#:: Ctrl+L to both scroll the current screen contents into the
27252725+#:: scrollback buffer and clear the screen, instead of just clearing
27262726+#:: the screen. For ZSH, in ~/.zshrc, add:
27272727+27282728+#:: .. code-block:: zsh
27292729+27302730+#:: ctrl_l() {
27312731+#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY"
27322732+#:: builtin zle .reset-prompt
27332733+#:: builtin zle -R
27342734+#:: }
27352735+#:: zle -N ctrl_l
27362736+#:: bindkey '^l' ctrl_l
27372737+27382738+#:: Alternatively, you can just add map ctrl+l clear_terminal
27392739+#:: to_cursor_scroll active to kitty.conf which works with no changes
27402740+#:: to the shell rc files, but only clears up to the prompt, it does
27412741+#:: not clear any text at the prompt itself.
27422742+27432743+#: Clear to start
27442744+27452745+# map cmd+k clear_terminal to_cursor active
27462746+27472747+#: Clear scrollback
27482748+27492749+# map option+cmd+k clear_terminal scrollback active
27502750+27512751+#: Clear screen
27522752+27532753+# map cmd+ctrl+l clear_terminal to_cursor_scroll active
27542754+27552755+#: Reload kitty.conf
27562756+27572757+# map kitty_mod+f5 load_config_file
27582758+# map ctrl+cmd+, load_config_file
27592759+27602760+#:: Reload kitty.conf, applying any changes since the last time it
27612761+#:: was loaded. Note that a handful of options cannot be dynamically
27622762+#:: changed and require a full restart of kitty. Particularly, when
27632763+#:: changing shortcuts for actions located on the macOS global menu
27642764+#:: bar, a full restart is needed. You can also map a keybinding to
27652765+#:: load a different config file, for example::
27662766+27672767+#:: map f5 load_config /path/to/alternative/kitty.conf
27682768+27692769+#:: Note that all options from the original kitty.conf are discarded,
27702770+#:: in other words the new configuration *replace* the old ones.
27712771+27722772+#: Debug kitty configuration
27732773+27742774+# map kitty_mod+f6 debug_config
27752775+# map opt+cmd+, debug_config
27762776+27772777+#:: Show details about exactly what configuration kitty is running
27782778+#:: with and its host environment. Useful for debugging issues.
27792779+27802780+#: Send arbitrary text on key presses
27812781+27822782+#:: E.g. map ctrl+shift+alt+h send_text all Hello World
27832783+27842784+#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the
27852785+#:: client program when pressing specified shortcut keys. For
27862786+#:: example::
27872787+27882788+#:: map ctrl+alt+a send_text all Special text
27892789+27902790+#:: This will send "Special text" when you press the Ctrl+Alt+A key
27912791+#:: combination. The text to be sent decodes ANSI C escapes
27922792+#:: <https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-
27932793+#:: Quoting.html> so you can use escapes like \e to send control
27942794+#:: codes or \u21fb to send Unicode characters (or you can just input
27952795+#:: the Unicode characters directly as UTF-8 text). You can use
27962796+#:: `kitten show-key` to get the key escape codes you want to
27972797+#:: emulate.
27982798+27992799+#:: The first argument to send_text is the keyboard modes in which to
28002800+#:: activate the shortcut. The possible values are normal,
28012801+#:: application, kitty or a comma separated combination of them. The
28022802+#:: modes normal and application refer to the DECCKM cursor key mode
28032803+#:: for terminals, and kitty refers to the kitty extended keyboard
28042804+#:: protocol. The special value all means all of them.
28052805+28062806+#:: Some more examples::
28072807+28082808+#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home)
28092809+#:: map ctrl+alt+a send_text normal Word\e[H
28102810+#:: map ctrl+alt+a send_text application Word\eOH
28112811+#:: # Run a command at a shell prompt (like typing the command and pressing Enter)
28122812+#:: map ctrl+alt+a send_text normal,application some command with arguments\r
28132813+28142814+#: Open kitty Website
28152815+28162816+# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/
28172817+28182818+#: Hide macOS kitty application
28192819+28202820+# map cmd+h hide_macos_app
28212821+28222822+#: Hide macOS other applications
28232823+28242824+# map opt+cmd+h hide_macos_other_apps
28252825+28262826+#: Minimize macOS window
28272827+28282828+# map cmd+m minimize_macos_window
28292829+28302830+#: Quit kitty
28312831+28322832+# map cmd+q quit
28332833+28342834+#: }}}
28352835+28362836+#: }}}
···11+ Apache License
22+ Version 2.0, January 2004
33+ http://www.apache.org/licenses/
44+55+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
66+77+ 1. Definitions.
88+99+ "License" shall mean the terms and conditions for use, reproduction,
1010+ and distribution as defined by Sections 1 through 9 of this document.
1111+1212+ "Licensor" shall mean the copyright owner or entity authorized by
1313+ the copyright owner that is granting the License.
1414+1515+ "Legal Entity" shall mean the union of the acting entity and all
1616+ other entities that control, are controlled by, or are under common
1717+ control with that entity. For the purposes of this definition,
1818+ "control" means (i) the power, direct or indirect, to cause the
1919+ direction or management of such entity, whether by contract or
2020+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
2121+ outstanding shares, or (iii) beneficial ownership of such entity.
2222+2323+ "You" (or "Your") shall mean an individual or Legal Entity
2424+ exercising permissions granted by this License.
2525+2626+ "Source" form shall mean the preferred form for making modifications,
2727+ including but not limited to software source code, documentation
2828+ source, and configuration files.
2929+3030+ "Object" form shall mean any form resulting from mechanical
3131+ transformation or translation of a Source form, including but
3232+ not limited to compiled object code, generated documentation,
3333+ and conversions to other media types.
3434+3535+ "Work" shall mean the work of authorship, whether in Source or
3636+ Object form, made available under the License, as indicated by a
3737+ copyright notice that is included in or attached to the work
3838+ (an example is provided in the Appendix below).
3939+4040+ "Derivative Works" shall mean any work, whether in Source or Object
4141+ form, that is based on (or derived from) the Work and for which the
4242+ editorial revisions, annotations, elaborations, or other modifications
4343+ represent, as a whole, an original work of authorship. For the purposes
4444+ of this License, Derivative Works shall not include works that remain
4545+ separable from, or merely link (or bind by name) to the interfaces of,
4646+ the Work and Derivative Works thereof.
4747+4848+ "Contribution" shall mean any work of authorship, including
4949+ the original version of the Work and any modifications or additions
5050+ to that Work or Derivative Works thereof, that is intentionally
5151+ submitted to Licensor for inclusion in the Work by the copyright owner
5252+ or by an individual or Legal Entity authorized to submit on behalf of
5353+ the copyright owner. For the purposes of this definition, "submitted"
5454+ means any form of electronic, verbal, or written communication sent
5555+ to the Licensor or its representatives, including but not limited to
5656+ communication on electronic mailing lists, source code control systems,
5757+ and issue tracking systems that are managed by, or on behalf of, the
5858+ Licensor for the purpose of discussing and improving the Work, but
5959+ excluding communication that is conspicuously marked or otherwise
6060+ designated in writing by the copyright owner as "Not a Contribution."
6161+6262+ "Contributor" shall mean Licensor and any individual or Legal Entity
6363+ on behalf of whom a Contribution has been received by Licensor and
6464+ subsequently incorporated within the Work.
6565+6666+ 2. Grant of Copyright License. Subject to the terms and conditions of
6767+ this License, each Contributor hereby grants to You a perpetual,
6868+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
6969+ copyright license to reproduce, prepare Derivative Works of,
7070+ publicly display, publicly perform, sublicense, and distribute the
7171+ Work and such Derivative Works in Source or Object form.
7272+7373+ 3. Grant of Patent License. Subject to the terms and conditions of
7474+ this License, each Contributor hereby grants to You a perpetual,
7575+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
7676+ (except as stated in this section) patent license to make, have made,
7777+ use, offer to sell, sell, import, and otherwise transfer the Work,
7878+ where such license applies only to those patent claims licensable
7979+ by such Contributor that are necessarily infringed by their
8080+ Contribution(s) alone or by combination of their Contribution(s)
8181+ with the Work to which such Contribution(s) was submitted. If You
8282+ institute patent litigation against any entity (including a
8383+ cross-claim or counterclaim in a lawsuit) alleging that the Work
8484+ or a Contribution incorporated within the Work constitutes direct
8585+ or contributory patent infringement, then any patent licenses
8686+ granted to You under this License for that Work shall terminate
8787+ as of the date such litigation is filed.
8888+8989+ 4. Redistribution. You may reproduce and distribute copies of the
9090+ Work or Derivative Works thereof in any medium, with or without
9191+ modifications, and in Source or Object form, provided that You
9292+ meet the following conditions:
9393+9494+ (a) You must give any other recipients of the Work or
9595+ Derivative Works a copy of this License; and
9696+9797+ (b) You must cause any modified files to carry prominent notices
9898+ stating that You changed the files; and
9999+100100+ (c) You must retain, in the Source form of any Derivative Works
101101+ that You distribute, all copyright, patent, trademark, and
102102+ attribution notices from the Source form of the Work,
103103+ excluding those notices that do not pertain to any part of
104104+ the Derivative Works; and
105105+106106+ (d) If the Work includes a "NOTICE" text file as part of its
107107+ distribution, then any Derivative Works that You distribute must
108108+ include a readable copy of the attribution notices contained
109109+ within such NOTICE file, excluding those notices that do not
110110+ pertain to any part of the Derivative Works, in at least one
111111+ of the following places: within a NOTICE text file distributed
112112+ as part of the Derivative Works; within the Source form or
113113+ documentation, if provided along with the Derivative Works; or,
114114+ within a display generated by the Derivative Works, if and
115115+ wherever such third-party notices normally appear. The contents
116116+ of the NOTICE file are for informational purposes only and
117117+ do not modify the License. You may add Your own attribution
118118+ notices within Derivative Works that You distribute, alongside
119119+ or as an addendum to the NOTICE text from the Work, provided
120120+ that such additional attribution notices cannot be construed
121121+ as modifying the License.
122122+123123+ You may add Your own copyright statement to Your modifications and
124124+ may provide additional or different license terms and conditions
125125+ for use, reproduction, or distribution of Your modifications, or
126126+ for any such Derivative Works as a whole, provided Your use,
127127+ reproduction, and distribution of the Work otherwise complies with
128128+ the conditions stated in this License.
129129+130130+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131131+ any Contribution intentionally submitted for inclusion in the Work
132132+ by You to the Licensor shall be under the terms and conditions of
133133+ this License, without any additional terms or conditions.
134134+ Notwithstanding the above, nothing herein shall supersede or modify
135135+ the terms of any separate license agreement you may have executed
136136+ with Licensor regarding such Contributions.
137137+138138+ 6. Trademarks. This License does not grant permission to use the trade
139139+ names, trademarks, service marks, or product names of the Licensor,
140140+ except as required for reasonable and customary use in describing the
141141+ origin of the Work and reproducing the content of the NOTICE file.
142142+143143+ 7. Disclaimer of Warranty. Unless required by applicable law or
144144+ agreed to in writing, Licensor provides the Work (and each
145145+ Contributor provides its Contributions) on an "AS IS" BASIS,
146146+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147147+ implied, including, without limitation, any warranties or conditions
148148+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149149+ PARTICULAR PURPOSE. You are solely responsible for determining the
150150+ appropriateness of using or redistributing the Work and assume any
151151+ risks associated with Your exercise of permissions under this License.
152152+153153+ 8. Limitation of Liability. In no event and under no legal theory,
154154+ whether in tort (including negligence), contract, or otherwise,
155155+ unless required by applicable law (such as deliberate and grossly
156156+ negligent acts) or agreed to in writing, shall any Contributor be
157157+ liable to You for damages, including any direct, indirect, special,
158158+ incidental, or consequential damages of any character arising as a
159159+ result of this License or out of the use or inability to use the
160160+ Work (including but not limited to damages for loss of goodwill,
161161+ work stoppage, computer failure or malfunction, or any and all
162162+ other commercial damages or losses), even if such Contributor
163163+ has been advised of the possibility of such damages.
164164+165165+ 9. Accepting Warranty or Additional Liability. While redistributing
166166+ the Work or Derivative Works thereof, You may choose to offer,
167167+ and charge a fee for, acceptance of support, warranty, indemnity,
168168+ or other liability obligations and/or rights consistent with this
169169+ License. However, in accepting such obligations, You may act only
170170+ on Your own behalf and on Your sole responsibility, not on behalf
171171+ of any other Contributor, and only if You agree to indemnify,
172172+ defend, and hold each Contributor harmless for any liability
173173+ incurred by, or claims asserted against, such Contributor by reason
174174+ of your accepting any such warranty or additional liability.
175175+176176+ END OF TERMS AND CONDITIONS
177177+178178+ APPENDIX: How to apply the Apache License to your work.
179179+180180+ To apply the Apache License to your work, attach the following
181181+ boilerplate notice, with the fields enclosed by brackets "[]"
182182+ replaced with your own identifying information. (Don't include
183183+ the brackets!) The text should be enclosed in the appropriate
184184+ comment syntax for the file format. We also recommend that a
185185+ file or class name and description of purpose be included on the
186186+ same "printed page" as the copyright notice for easier
187187+ identification within third-party archives.
188188+189189+ Copyright [yyyy] [name of copyright owner]
190190+191191+ Licensed under the Apache License, Version 2.0 (the "License");
192192+ you may not use this file except in compliance with the License.
193193+ You may obtain a copy of the License at
194194+195195+ http://www.apache.org/licenses/LICENSE-2.0
196196+197197+ Unless required by applicable law or agreed to in writing, software
198198+ distributed under the License is distributed on an "AS IS" BASIS,
199199+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200200+ See the License for the specific language governing permissions and
201201+ limitations under the License.
+4
.config/nvim/README.md
···11+# 💤 LazyVim
22+33+A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
44+Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
···11+-- Autocmds are automatically loaded on the VeryLazy event
22+-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
33+--
44+-- Add any additional autocmds here
55+-- with `vim.api.nvim_create_autocmd`
66+--
77+-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
88+-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
···11+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
22+if not (vim.uv or vim.loop).fs_stat(lazypath) then
33+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
44+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
55+ if vim.v.shell_error ~= 0 then
66+ vim.api.nvim_echo({
77+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
88+ { out, "WarningMsg" },
99+ { "\nPress any key to exit..." },
1010+ }, true, {})
1111+ vim.fn.getchar()
1212+ os.exit(1)
1313+ end
1414+end
1515+vim.opt.rtp:prepend(lazypath)
1616+1717+require("lazy").setup({
1818+ spec = {
1919+ -- add LazyVim and import its plugins
2020+ { "LazyVim/LazyVim", import = "lazyvim.plugins" },
2121+ -- import/override with your plugins
2222+ { import = "plugins" },
2323+ },
2424+ defaults = {
2525+ -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
2626+ -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
2727+ lazy = false,
2828+ -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
2929+ -- have outdated releases, which may break your Neovim install.
3030+ version = false, -- always use the latest git commit
3131+ -- version = "*", -- try installing the latest stable version for plugins that support semver
3232+ },
3333+ install = { colorscheme = { "tokyonight", "habamax" } },
3434+ checker = {
3535+ enabled = true, -- check for plugin updates periodically
3636+ notify = false, -- notify on update
3737+ }, -- automatically check for plugin updates
3838+ performance = {
3939+ rtp = {
4040+ -- disable some rtp plugins
4141+ disabled_plugins = {
4242+ "gzip",
4343+ -- "matchit",
4444+ -- "matchparen",
4545+ -- "netrwPlugin",
4646+ "tarPlugin",
4747+ "tohtml",
4848+ "tutor",
4949+ "zipPlugin",
5050+ },
5151+ },
5252+ },
5353+})