Using The Super Fast Kitty Terminal

kitty

Sup y’all. Back with another post on my terminal setup. This time we’ve migrated away from iTerm2, after maybe a decade of use, and into kitty. It’s an open source fast, feature-rich, GPU based terminal emulator. And I mean fast. It’s blazing fast. This guide is macOS specific, but it should be easy to adapt to other platforms.

Step 1: Installing Kitty

First, you’ll need to install kitty. We’re gonna use brew to do this.

brew install kitty

Step 2: Configuring Kitty

There are so many options, so def explore. Luckily all config is basically inside one file. There’s a standard template you can use to get started. Kitty offers versatile customization, from keyboard shortcuts to FPS rendering. Explore its extensive personalized options.

Access Kitty’s config file using the shortcut Ctrl + Shift + F2 (Cmd + , on macOS) for easy customization. You can also use kitty +kitten config to open the config file in a text editor.

This file is located in ~/.config/kitty/kitty.conf typically. You can change this path, more info here. I’ve truncated the file overal for brevity, but typically the default config is quite extensive with vim folding and comments.

The first plugin (integration) I’d recommend is kitty-kitten-search. It’s a plugin that allows you to search for text in all open Kitty windows. Here’s a link.

I trigger the ssearch with cmd + f or cmd + / via:

map kitty_mod+/ launch --location=hsplit --allow-remote-control kitty +kitten search.py @active-kitty-window-id
map kitty_mod+f launch --location=hsplit --allow-remote-control kitty +kitten search.py @active-kitty-window-id

I also use kitty-themes to set my theme. Here’s a link to the repo.

My kitty config, as of October, 2nd, 2024 is below:

# vim:fileencoding=utf-8:ft=conf

# map cmd+left previous_tab # Go to previous tab
# map cmd+right next_tab # Go to next tab
# map cmd+t new_tab # Create new tab
# map kitty_mod+alt+t set_tab_title # Set tab title

active_border_color #0c0c0c
adjust_line_height  130%
allow_remote_control yes
background_blur 25
background_opacity 0.90
bell_on_tab yes
bold_font family='Hack Nerd Font Mono' postscript_name=HackNFM-Bold
bold_italic_font family='Hack Nerd Font Mono' postscript_name=HackNFM-BoldItalic
copy_on_select yes
cursor_beam_thickness 2.0
cursor_blink_interval -1
cursor_shape block
cursor_stop_blinking_after 15.0
cursor_underline_thickness 2.0
dim_opacity 0.50
disable_ligatures never
draw_minimal_borders yes
enable_audio_bell no
enable_audio_bell yes
# enabled_layouts tall,fat,horizontal,vertical
enabled_layouts fat:bias=50;full_size=1;mirrored=false,horizontal,vertical
focus_follows_mouse no
font_family family='Hack Nerd Font Mono' postscript_name=HackNFM-Regular
font_features none
font_size 11
hide_window_decorations yes
inactive_border_color #0c0c0c
inactive_text_alpha 0.4
include ./theme.conf
italic_font family='Hack Nerd Font Mono' postscript_name=HackNFM-Italic
kitty_mod cmd
listen_on unix:/tmp/kitty
macos_show_window_title_in none
map cmd+down scroll_line_down # Scroll down one line
map cmd+up scroll_line_up # Scroll up one line
map kitty_mod+[ previous_window
map kitty_mod+] next_window
map kitty_mod+/ launch --location=hsplit --allow-remote-control kitty +kitten search.py @active-kitty-window-id
map kitty_mod+end scroll_end # Scroll to bottom
map kitty_mod+f launch --location=hsplit --allow-remote-control kitty +kitten search.py @active-kitty-window-id
map kitty_mod+home scroll_home # Scroll to top
map kitty_mod+page_down scroll_page_down # Scroll down one page
map kitty_mod+page_up scroll_page_up # Scroll up one page
map kitty_mod+shift+n new_window
map kitty_mod+d new_window
map kitty_mod+w close_window
map kitty_mod+x scroll_to_prompt 1 # Scroll to next prompt
map kitty_mod+z scroll_to_prompt -1 # Scroll to previous prompt
modify_font strikethrough_position 12px
modify_font underline_position 3
modify_font underline_thickness 150%
mouse_hide_wait 3.0
open_url_modifiers cmd
open_url_with default
remember_window_size no
scrollback_lines 10000
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
select_by_word_characters @-./_~?&=%+#
shell_integration enabled no-title
startup_session default_session.kitty
symbol_map U+f101-U+f27d nonicons
touch_scroll_multiplier 1.0
url_prefixes http https file ftp git
url_style curly
wheel_scroll_multiplier 3.0
window_alert_on_bell yes
window_alert_on_bell yes
window_margin_width 15
window_padding_width 15
window_resize_step_cells 2
window_resize_step_lines 2
allow_hyperlinks yes

Here’s some awesome examples of what some other people have done with kitty.

No previews, great reference

With previews

image donovanglover

image wochap

image AydroPunk

image jhagas

image kaiyulee

Hope you give kitty a try and find it useful and the speed refreshing as I do.

ender