forked from liuchengxu/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
/
kitty.conf
526 lines (430 loc) · 19.4 KB
/
kitty.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
# vim:fileencoding=utf-8:ft=conf
# You can include secondary config files via the "include" directive.
# If you use a relative path for include, it is resolved with respect to the
# location od the current config file. For example:
# include other.conf
# Fonts {{{
# Font family. You can also specify different fonts for the
# bold/italic/bold-italic variants. By default they are derived automatically,
# by the OSes font system. Setting them manually is useful for font families
# that have many weight variants like Book, Medium, Thick, etc. For example:
# font_family Operator Mono Book
# bold_font Operator Mono Medium
# italic_font Operator Mono Book Italic
# bold_italic_font Operator Mono Medium Italic
#
# You can get a list of full family names available on your computer by running
# kitty list-fonts
# The default values shown below rely on your OS to choose an appropriate monospace font family.
# font_family Source Code Pro for Powerline
# font_family Iosevka Term
# font_family SauceCodePro Nerd Font
font_family Iosevka Nerd Font Regular
# font_family Fira Code
# font_family Fantasque Sans Mono
# font_family Fira Mono for Powerline
# italic_font Fira Code
# bold_font Fira Code
# bold_italic_font Fira Code
# italic_font Iosevka Term
# bold_font Iosevka Term
# bold_italic_font Iosevka Term
italic_font SauceCodePro Nerd Font
bold_font SauceCodePro Nerd Font
bold_italic_font SauceCodePro Nerd Font
italic_font Iosevka Nerd Font Italic
bold_font Iosevka Nerd Font Bold
bold_italic_font Iosevka Nerd Font Bold
# Font size (in pts)
font_size 14.0
# The amount the font size is changed by (in pts) when increasing/decreasing
# the font size in a running terminal.
# font_size_delta 2
# Adjust the cell dimensions.
# You can use either numbers, which are interpreted as pixels or percentages
# (number followed by %), which are interpreted as percentages of the
# unmodified values. You can use negative pixels or percentages less than
# 100% to reduce sizes (but this might cause rendering artifacts).
# adjust_line_height 0
# adjust_column_width 0
# Symbol mapping (special font for specified unicode code points). Map the
# specified unicode codepoints to a particular font. Useful if you need special
# rendering for some symbols, such as for Powerline. Avoids the need for
# patched fonts. Each unicode code point is specified in the form U+<code point
# in hexadecimal>. You can specify multiple code points, separated by commas
# and ranges separated by hyphens. symbol_map itself can be specified multiple times.
# Syntax is:
#
# symbol_map codepoints Font Family Name
#
# For example:
#
# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
# Change the sizes of the lines used for the box drawing unicode characters
# These values are in pts. They will be scaled by the monitor DPI to arrive at
# a pixel value. There must be four values corresponding to thin, normal, thick,
# and very thick lines;
# box_drawing_scale 0.001, 1, 1.5, 2
# }}}
# Cursor customization {{{
# The cursor color
# cursor #cccccc
cursor #e6e600
# The cursor shape can be one of (block, beam, underline)
# cursor_shape block
# The interval (in seconds) at which to blink the cursor. Set to zero to
# disable blinking. Note that numbers smaller than repaint_delay will be
# limited to repaint_delay.
# cursor_blink_interval 0.5
# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to
# zero to never stop blinking.
# cursor_stop_blinking_after 15.0
# }}}
# Scrollback {{{
# Number of lines of history to keep in memory for scrolling back
# scrollback_lines 2000
# Program with which to view scrollback in a new window. The scrollback buffer is passed as
# STDIN to this program. If you change it, make sure the program you use can
# handle ANSI escape sequences for colors and text formatting.
# scrollback_pager less +G -R
# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel). Use negative
# numbers to change scroll direction.
# wheel_scroll_multiplier 5.0
# }}}
# Mouse {{{
# The color and style for highlighting URLs on mouse-over. url_style can be one of:
# none, single, double, curly
# url_color #0087BD
# url_style curly
# The modifier keys to press when clicking with the mouse on URLs to open the URL
# open_url_modifiers ctrl+shift
# The program with which to open URLs that are clicked on. The special value "default" means to
# use the operating system's default URL handler.
# open_url_with default
# Copy to clipboard on select. With this enabled, simply selecting text with
# the mouse will cause the text to be copied to clipboard. Useful on platforms
# such as macOS/Wayland that do not have the concept of primary selections. Note
# that this is a security risk, as all programs, including websites open in your
# browser can read the contents of the clipboard.
# copy_on_select no
# The modifiers to use rectangular selection (i.e. to select text in a
# rectangular block with the mouse)
# rectangle_select_modifiers ctrl+alt
# Characters considered part of a word when double clicking. In addition to these characters
# any character that is marked as an alpha-numeric character in the unicode
# database will be matched.
# select_by_word_characters :@-./_~?&=%+#
# The interval between successive clicks to detect double/triple clicks (in seconds)
# click_interval 0.5
# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to
# zero to disable mouse cursor hiding.
# mouse_hide_wait 3.0
# Set the active window to the window under the mouse when moving the mouse around
# focus_follows_mouse no
# }}}
# Performance tuning {{{
# Delay (in milliseconds) between screen updates. Decreasing it, increases
# frames-per-second (FPS) at the cost of more CPU usage. The default value
# yields ~100 FPS which is more than sufficient for most uses. Note that to
# actually achieve 100FPS you have to either set sync_to_monitor to no or use a
# monitor with a high refresh rate.
# repaint_delay 10
# Delay (in milliseconds) before input from the program running in the terminal
# is processed. Note that decreasing it will increase responsiveness, but also
# increase CPU usage and might cause flicker in full screen programs that
# redraw the entire screen on each loop, because kitty is so fast that partial
# screen updates will be drawn.
# input_delay 3
# Sync screen updates to the refresh rate of the monitor. This prevents
# tearing (https://en.wikipedia.org/wiki/Screen_tearing) when scrolling. However,
# it limits the rendering speed to the refresh rate of your monitor. With a
# very high speed mouse/high keyboard repeat rate, you may notice some slight input latency.
# If so, set this to no.
# sync_to_monitor yes
# }}}
# Audio/visual bell {{{
# Visual bell duration. Flash the screen when a bell occurs for the specified number of
# seconds. Set to zero to disable.
# visual_bell_duration 0.0
# Enable/disable the audio bell. Useful in environments that require silence.
# enable_audio_bell yes
# }}}
# Window layout {{{
# If enabled, the window size will be remembered so that new instances of kitty will have the same
# size as the previous instance. If disabled, the window will initially have size configured
# by initial_window_width/height, in pixels.
remember_window_size yes
initial_window_width 640
initial_window_height 400
# The enabled window layouts. A comma separated list of layout names. The special value * means
# all layouts. The first listed layout will be used as the startup layout.
# For a list of available layouts, see the README.
# enabled_layouts *
# The width (in pts) of window borders. Will be rounded to the nearest number of pixels based on screen resolution.
# Note that borders are displayed only when more than one window is visible. They are meant to separate multiple windows.
# window_border_width 1
# The window margin (in pts) (blank area outside the border)
# window_margin_width 0
# The window padding (in pts) (blank area between the text and the window border)
# window_padding_width 0
# The color for the border of the active window
# active_border_color #00ff00
# The color for the border of inactive windows
# inactive_border_color #cccccc
# Fade the text in inactive windows by the specified amount (a number between
# zero and one, with 0 being fully faded).
# inactive_text_alpha 1.0
# }}}
# Tab bar {{{
# Which edge to show the tab bar on, top or bottom
# tab_bar_edge bottom
# The separator between tabs in the tab bar
# tab_separator " ┇"
# Tab bar colors and styles
# active_tab_foreground #000
# active_tab_background #eee
# active_tab_font_style bold-italic
# inactive_tab_foreground #444
# inactive_tab_background #999
# inactive_tab_font_style normal
# }}}
# Color scheme {{{
# The foreground color
foreground #b2b2b2
# The background color
background #292b2e
# background #fbf8ef
# The opacity of the background. A number between 0 and 1, where 1 is opaque and 0 is fully transparent.
# This will only work if supported by the OS (for instance, when using a compositor under X11). Note
# that it only sets the default background color's opacity. This is so that
# things like the status bar in vim, powerline prompts, etc. still look good.
# But it means that if you use a color theme with a background color in your
# editor, it will not be rendered as transparent. Instead you should change the
# default background color in your kitty config and not use a background color
# in the editor color scheme. Or use the escape codes to set the terminals
# default colors in a shell script to launch your editor.
# Be aware that using a value less than 1.0 is a (possibly significant) performance hit.
# background_opacity 1.0
# The foreground for selections
selection_foreground #5d4d7a
# The background for selections
# selection_background #FFFACD
# The 16 terminal colors. There are 8 basic colors, each color has a dull and
# bright version. You can also set the remaining colors from the 256 color table
# as color16 to color256.
# black
color0 #292b2e
color8 #68727c
# red
color1 #d75f87
color9 #ff5f87
# green
color2 #84d96f
color10 #a4e93f
# yellow
color3 #b1951d
color11 #eead0e
# blue
color4 #7590db
color12 #4f97d7
# magenta
color5 #a45bad
color13 #dd75dd
# cyan
color6 #2aa1ae
color14 #21b8c7
# white
color7 #cccccc
color15 #e6e5e5
# }}}
# Advanced {{{
# The shell program to execute. The default value of . means
# to use whatever shell is set as the default shell for the current user.
# Note that on macOS if you change this, you might need to add --login to
# ensure that the shell starts in interactive mode and reads its startup rc files.
# shell .
# Close the window when the child process (shell) exits. If no (the default),
# the terminal will remain open when the child exits as long as there are still
# processes outputting to the terminal (for example disowned or backgrounded
# processes). If yes, the window will close as soon as the child process exits.
# Note that setting it to yes means that any background processes still using
# the terminal can fail silently because their stdout/stderr/stdin no longer
# work.
# close_on_child_death no
# Allow other programs to control kitty. If you turn this on other programs can
# control all aspects of kitty, including sending text to kitty windows,
# opening new windows, closing windows, reading the content of windows, etc.
# Note that this even works over ssh connections.
# allow_remote_control no
# The value of the TERM environment variable to set. Changing this can break
# many terminal programs, only change it if you know what you are doing, not
# because you read some advice on Stack Overflow to change it.
# term xterm-kitty
# }}}
# Keyboard shortcuts {{{
# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html
# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html
#
# You can use the special action no_op to unmap a keyboard shortcut that is
# assigned in the default configuration.
#
# You can combine multiple actions to be triggered by a single shortcut, using the
# syntax below:
# map key combine <separator> action1 <separator> action2 <separator> action3 ...
# For example:
# map ctrl+shift+e combine : new_window : next_layout
# this will create a new window and switch to the next available layout
#
# You can use multi-key shortcuts using the syntax shown below:
# map key1>key2>key3 action
# For example:
# map ctrl+f>2 set_font_size 20
# this will change the font size to 20 points when you press ctrl+f and then 2
# Clipboard {{{
# map ctrl+shift+v paste_from_clipboard
map cmd+v paste_from_clipboard
# map ctrl+shift+s paste_from_selection
# map ctrl+shift+c copy_to_clipboard
map cmd+c copy_to_clipboard
# map shift+insert paste_from_selection
# You can also pass the contents of the current selection to any program using
# pass_selection_to_program. By default, the system's open program is used, but
# you can specify your own, for example:
# map ctrl+shift+o pass_selection_to_program firefox
# map ctrl+shift+o pass_selection_to_program
# }}}
# Scrolling {{{
# map ctrl+shift+up scroll_line_up
# map ctrl+shift+down scroll_line_down
# map ctrl+shift+k scroll_line_up
# map ctrl+shift+j scroll_line_down
# map ctrl+shift+page_up scroll_page_up
# map ctrl+shift+page_down scroll_page_down
# map ctrl+shift+home scroll_home
# map ctrl+shift+end scroll_end
# map ctrl+shift+h show_scrollback
# }}}
# Window management {{{
# map ctrl+shift+enter new_window
# map ctrl+shift+n new_os_window
# map ctrl+shift+w close_window
# map ctrl+shift+] next_window
# map ctrl+shift+[ previous_window
# map ctrl+shift+f move_window_forward
# map ctrl+shift+b move_window_backward
# map ctrl+shift+` move_window_to_top
# map ctrl+shift+1 first_window
# map ctrl+shift+2 second_window
# map ctrl+shift+3 third_window
# map ctrl+shift+4 fourth_window
# map ctrl+shift+5 fifth_window
# map ctrl+shift+6 sixth_window
# map ctrl+shift+7 seventh_window
# map ctrl+shift+8 eighth_window
# map ctrl+shift+9 ninth_window
# map ctrl+shift+0 tenth_window
# You can open a new window running an arbitrary program, for example:
# map ctrl+shift+y new_window mutt
#
# You can pass the current selection to the new program by using the @selection placeholder
# map ctrl+shift+y new_window less @selection
#
# You can even send the contents of the current screen + history buffer as stdin using
# the placeholders @text (which is the plain text) and @ansi (which includes text styling escape codes).
# For only the current screen, use @screen or @ansi_screen.
# For example, the following command opens the scrollback buffer in less in a new window.
# map ctrl+shift+y new_window @ansi less +G -R
#
# You can open a new window with the current working directory set to the
# working directory of the current window using
# map ctrl+alt+enter new_window_with_cwd
# }}}
# Tab management {{{
# map ctrl+shift+right next_tab
# map ctrl+shift+left previous_tab
# map ctrl+shift+t new_tab
# map ctrl+shift+q close_tab
# map ctrl+shift+l next_layout
# map ctrl+shift+. move_tab_forward
# map ctrl+shift+, move_tab_backward
# map ctrl+shift+alt+t set_tab_title
# You can also create shortcuts to go to specific tabs, with 1 being the first tab
# map ctrl+alt+1 goto_tab 1
# map ctrl+alt+2 goto_tab 2
# Just as with new_window above, you can also pass the name of arbitrary
# commands to run when using new_tab and use new_tab_with_cwd.
# }}}
# Layout management {{{
# You can create shortcuts to switch to specific layouts
# map ctrl+alt+1 goto_layout tall
# map ctrl+alt+2 goto_layout stack
# }}}
# Font sizes {{{
# map ctrl+shift+equal increase_font_size
map cmd+equal increase_font_size
# map ctrl+shift+minus decrease_font_size
map cmd+minus decrease_font_size
# map ctrl+shift+backspace restore_font_size
# To setup shortcuts for specific font sizes, follow the example below:
# map ctrl+shift+f6 set_font_size 10.0
# map ctrl+shift+f7 set_font_size 20.5
# }}}
# Select and act on visible text {{{
# Use the hints kitten to select text and either pass it to an external program or
# insert it into the terminal or copy it to the clipboard.
#
# Open a currently visible URL using the keyboard. The program used to open the
# URL is specified in open_url_with.
# map ctrl+shift+e run_kitten text hints
# Select a path/filename and insert it into the terminal. Useful, for instance to
# run git commands on a filename output from a previous git command.
# map ctrl+shift+p>f run_kitten text hints --type path --program -
# Select a path/filename and open it with the default open program.
# map ctrl+shift+p>shift+f run_kitten text hints --type path
# Select a line of text and insert it into the terminal. Use for the
# output of things like: ls -1
# map ctrl+shift+p>l run_kitten text hints --type line --program -
# Select words and insert into terminal.
# map ctrl+shift+p>w run_kitten text hints --type word --program -
# The hints kitten has many more modes of operation that you can map to different
# shortcuts. For a full description run: kitty +kitten hints --help
# }}}
# Miscellaneous {{{
map ctrl+shift+f11 toggle_fullscreen
map ctrl+shift+u input_unicode_character
map ctrl+shift+f2 edit_config_file
# You can customize how the URLs are
# Open the kitty shell in a new window/tab/overlay/os_window to control kitty using commands.
# map ctrl+shift+escape kitty_shell window
# Sending arbitrary text on shortcut key presses
# You can tell kitty to send arbitrary (UTF-8) encoded text to
# the client program when pressing specified shortcut keys. For example:
# map ctrl+alt+a send_text all Special text
# This will send "Special text" when you press the Ctrl+Alt+a key combination.
# The text to be sent is a python string literal so you can use escapes like
# \x1b to send control codes or \u21fb to send unicode characters (or you can
# just input the unicode characters directly as UTF-8 text). The first argument
# to send_text is the keyboard modes in which to activate the shortcut. The possible
# values are normal or application or kitty or a comma separated combination of them.
# The special keyword all means all modes. The modes normal and application refer to
# the DECCKM cursor key mode for terminals, and kitty refers to the special kitty
# extended keyboard protocol. Another example, that outputs a word and then moves the cursor
# to the start of the line (same as pressing the Home key):
# map ctrl+alt+a send_text normal Word\x1b[H
# map ctrl+alt+a send_text application Word\x1bOH
# }}}
# }}}
# OS specific tweaks {{{
# Change the color of the kitty window's titlebar on macOS. A value of "system"
# means to use the default system color, a value of "background" means to use
# the default background color and finally you can use an arbitrary color, such
# as #12af59 or "red".
# macos_titlebar_color system
# Hide the kitty window's title bar on macOS.
# macos_hide_titlebar no
# Use the option key as an alt key. With this set to no, kitty will use
# the macOS native Option+Key = unicode character behavior. This will
# break any Alt+key keyboard shortcuts in your terminal programs, but you
# can use the macOS unicode input technique.
# macos_option_as_alt yes
# }}}