# 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 monospace # italic_font auto # bold_font auto # bold_italic_font auto font_family SF Mono Medium italic_font SF Mono Medium Italic bold_font SF Mono Heavy bold_italic_font SF Mono Heavy Italic # Font size (in pts) font_size 12.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 120% 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+. 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 # 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 yes # 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 no # }}} # 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 no initial_window_width 680 initial_window_height 720 # 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 * enabled_layouts tall:bias=70, tall, stack, horizontal # 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 8 # The color for the border of the active window active_border_color #666666 # The color for the border of inactive windows inactive_border_color #444444 # 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 margin to the left and right of the tab bar (in pts) tab_bar_margin_width 1.0 # The tab bar style, can be one of: fade or separator. In the fade style, each # tab’s edges fade into the background color, in the separator style, tabs are # separated by a configurable separator. tab_bar_style fade # Control how each tab fades into the background when using fade for the # tab_bar_style. Each number is an alpha (between zero and one) that controls # how much the corresponding cell fades into the background, with zero being no # fade and one being full fade. You can change the number of cells used by # adding/removing entries to this list. tab_fade 0.25 0.5 0.75 1 # The separator between tabs in the tab bar when using separator as the # tab_bar_style. tab_separator " │ " # Tab bar colors and styles # For style things like `bold` and `bold-italic work active_tab_foreground #e6e6e6 active_tab_background #444 active_tab_font_style normal inactive_tab_foreground #bfbfbf inactive_tab_background #262626 inactive_tab_font_style normal # }}} # Color scheme {{{ # The foreground color foreground #dddddd # The background color background #262626 # 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. If you want to dynamically change # transparency of windows set dynamic_background_opacity to yes (this is off by # default as it has a performance cost) background_opacity 1.0 dynamic_background_opacity no # The foreground for selections selection_foreground #222 # The background for selections selection_background #ccff00 # 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 #000000 color8 #4d4d4d # red color1 #c73b1d color9 #e82100 # green color2 #00a800 color10 #00db00 # yellow color3 #acaf15 color11 #e5e900 # blue color4 #0c21b5 color12 #1633ff # magenta color5 #d533ce color13 #e83ae9 # cyan color6 #2cbac9 color14 #00e6e7 # white color7 #bfbfbf color15 #e6e6e6 # }}} # 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 yes # 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 action1 action2 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 cmd+v paste_from_clipboard map ctrl+shift+s paste_from_selection 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 cmd+enter new_window map cmd+n new_os_window map ctrl+shift+w close_window map cmd+] next_window map cmd+[ 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 cmd+shift+] next_tab map cmd+shift+[ previous_tab map cmd+t new_tab map cmd+w close_tab map ctrl+shift+l next_layout map cmd+shift+. move_tab_forward map cmd+shift+, move_tab_backward map cmd+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 map ctrl+alt+3 goto_tab 3 map ctrl+alt+4 goto_tab 4 map ctrl+alt+5 goto_tab 5 # 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 ctrl+shift+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 # 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 background # 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 # }}}