Kitty is a fast, feature-rich, GPU-accelerated terminal emulator with advanced capabilities like image protocol, ligatures, and powerful tiling. Written in C and Python, it balances performance with extensive customization.
Why Kitty?
GPU Rendering OpenGL-based rendering for smooth performance
Image Protocol Display images directly in the terminal
Tiling & Tabs Powerful built-in window management
Kittens Extensible with custom “kitten” plugins
Installation
Install Kitty
macOS
Linux (Official Installer)
Ubuntu/Debian
Arch Linux
brew install --cask kitty
Install IosevkaTerm Nerd Font
# macOS
brew tap homebrew/cask-fonts
brew install font-iosevka-term-nerd-font
# Linux - Download from nerdfonts.com
Link Gentleman.Dots configuration
# Create config directory
mkdir -p ~/.config/kitty
# Link the entire GentlemanKitty directory
ln -sf ~/Gentleman.Dots/GentlemanKitty/ * ~/.config/kitty/
Launch Kitty
Open Kitty and enjoy your feature-rich terminal!
Configuration Breakdown
The Gentleman.Dots Kitty config (GentlemanKitty/kitty.conf) includes comprehensive settings:
Font Configuration
# Font settings
font_family IosevkaTerm Nerd Font
font_size 14.0
Kitty’s font rendering is exceptional:
Ligature support - Programming ligatures (==, =>, !=, etc.)
Precise metrics - Pixel-perfect glyph rendering
Nerd Font icons - Full icon support for modern CLI tools
Transparency & Visual Effects
# Transparency (95% opaque)
background_opacity 0.95
# Optional blur (commented out by default)
# background_blur 0
Kitty’s background_opacity works on all platforms. The background_blur option is macOS-specific and requires compositor support on Linux.
Color Scheme: Old World (Kanagawa)
# Base colors
background #1F1F28 # Deep blue-black background
foreground #DCD7BA # Soft beige text
# Cursor
cursor #DCD7BA
# Selection
selection_background #2A2A37
selection_foreground #DCD7BA
# URL color
url_color #7FB4CA # Light blue for links
The “Old World” theme (lines 53-122) is based on Kanagawa, providing:
Warm, muted colors - Easy on the eyes for long sessions
Excellent contrast - Readable text on dark background
Japanese aesthetic - Inspired by traditional art
The config includes an alternative “Sakura Theme” (commented out at lines 11-51). Uncomment it and comment out the Old World theme to switch.
Normal & Bright Colors
# Normal colors
color0 #1F1F28 # Black (background)
color1 #C34043 # Red
color2 #76946A # Green
color3 #C0A36E # Yellow
color4 #7E9CD8 # Blue
color5 #957FB8 # Magenta
color6 #6A9589 # Cyan
color7 #DCD7BA # White (foreground)
# Bright colors
color8 #54546D # Bright black (gray)
color9 #E82424 # Bright red
color10 #98BB6C # Bright green
color11 #E6C384 # Bright yellow
color12 #7FB4CA # Bright blue
color13 #938AA9 # Bright magenta
color14 #7AA89F # Bright cyan
color15 #DCD7BA # Bright white
# Extended colors
color16 #FFA066 # Orange
color17 #D27E99 # Pink
Tab Configuration
# Tab colors
active_tab_background #2A2A37
active_tab_foreground #7E9CD8 # Soft blue for active tab
inactive_tab_background #1F1F28
inactive_tab_foreground #54546D # Muted for inactive tabs
macOS-Specific Settings
# Make Option key work as Alt (crucial for macOS)
macos_option_as_alt yes
The macos_option_as_alt yes setting is essential for macOS users. Without it, keyboard shortcuts like Alt+f (forward word) and Alt+b (backward word) won’t work in your shell.
Key Mappings
# Tab navigation with Cmd+number (macOS) or Ctrl+number (Linux)
map cmd+1 goto_tab 1
map cmd+2 goto_tab 2
map cmd+3 goto_tab 3
map cmd+4 goto_tab 4
map cmd+5 goto_tab 5
map cmd+6 goto_tab 6
map cmd+7 goto_tab 7
map cmd+8 goto_tab 8
map cmd+9 goto_tab 9
Key Features
Image Protocol
Kitty pioneered the Kitty graphics protocol for terminal images:
# Display an image
kitty +kitten icat image.png
# Display with size control
kitty +kitten icat --place 80x40@0x0 image.png
# Works with:
# - ranger (file manager with image previews)
# - viu (terminal image viewer)
# - neofetch (ASCII art + logo)
Many terminal tools now support the Kitty graphics protocol, including ranger, lf, and various image viewers. This protocol is also supported by WezTerm and other modern terminals.
Kittens (Extensions)
Kitty’s “kittens” are powerful mini-programs:
Diff Kitten
Unicode Input
Clipboard
Hints Kitten
# Beautiful side-by-side diff viewer
kitty +kitten diff file1.txt file2.txt
Window/Tab Management
Kitty has sophisticated tiling:
Tabs
Windows (Splits)
Layouts
Ctrl+Shift+T # New tab
Ctrl+Shift+Q # Close tab
Ctrl+Shift+Right # Next tab
Ctrl+Shift+Left # Previous tab
Ctrl+Shift+Alt+T # Rename tab
Font Ligatures
Kitty supports programming ligatures out of the box:
== → == (equal comparison)
!= → ≠ (not equal)
>= → ≥ (greater or equal)
<= → ≤ (less or equal)
=> → ⇒ (arrow)
-> → → (arrow)
While IosevkaTerm Nerd Font has excellent ligature support, you can try fonts like Fira Code or JetBrains Mono for even more elaborate ligatures by changing font_family in kitty.conf:4.
Working with Gentleman.Dots
With or Without Tmux
Like WezTerm, Kitty has built-in multiplexing:
Option 1: Use Kitty’s native tabs/windows
# Kitty's tiling is powerful enough for most workflows
Option 2: Combine with tmux
# Use tmux for:
# - Session persistence across disconnects
# - Remote attachment
# - Complex scripting
tmux attach || tmux new
Shell Integration
Kitty has deep shell integration features:
# Add to your shell rc file for enhanced features:
# - Jump to previous prompts with Ctrl+Shift+Z
# - Semantic output copying
# - Command output piping to editor
# For Zsh
if test -n " $KITTY_INSTALLATION_DIR " ; then
export KITTY_SHELL_INTEGRATION = "enabled"
autoload -Uz -- " $KITTY_INSTALLATION_DIR "/shell-integration/zsh/kitty-integration
kitty-integration
unfunction kitty-integration
fi
With Neovim
Kitty’s image protocol works great with Neovim:
" Use kitty for image previews in telescope/fzf
" Requires telescope-media-files or similar plugins
Advanced Customization
Custom Layouts
Create a custom layout in kitty.conf:
# Custom layout: one main window, sidebar
enabled_layouts splits:split_axis=horizontal
# Or define completely custom layouts
map ctrl+shift+minus launch --location=hsplit
map ctrl+shift+\ launch --location=vsplit
Startup Sessions
Create session files for project layouts:
# ~/mysession.conf
layout tall
cd ~/projects/myproject
launch zsh
new_tab
cd ~/projects/myproject
launch nvim
new_tab
cd ~/projects/myproject/docs
Then load with:
kitty --session ~/mysession.conf
Remote Control
Enable remote control for automation:
# Allow remote control
allow_remote_control yes
listen_on unix:/tmp/mykitty
Then control from scripts:
kitty @ new-window --title "Build Output"
kitty @ send-text "npm run build\n"
# Increase scrollback for development
scrollback_lines 10000
# Or use pager for very large output
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
# Reduce input delay (in milliseconds)
repaint_delay 10
# Sync screen updates to monitor refresh
sync_to_monitor yes
Troubleshooting
Font Issues
List available fonts
kitty +list-fonts
# Shows all fonts Kitty can find
Test font rendering
kitty +list-fonts --psnames | grep -i iosevka
# Verify IosevkaTerm is available
Debug font selection
kitty --debug-font-fallback
# Shows which fonts are used for each character
Color Issues
If colors look wrong, ensure your shell’s TERM variable is set correctly. Kitty sets TERM to xterm-kitty by default.
# Check TERM
echo $TERM
# Should be: xterm-kitty
# If programs don't recognize it, you can change it:
# In kitty.conf:
term xterm-256color
# Test Kitty's FPS
kitty +kitten show_key -m kitty
# If slow, try:
# 1. Disable ligatures in kitty.conf:
disable_ligatures always
# 2. Reduce visual effects:
background_opacity 1.0 # No transparency
Comparison Table
Feature Kitty Alacritty WezTerm Ghostty Tabs ✅ Built-in ❌ ✅ Built-in ✅ Built-in Splits ✅ Layouts ❌ ✅ Built-in ✅ Built-in Images ✅ Kitty protocol ❌ ✅ Kitty protocol ✅ Ligatures ✅ Excellent ⚠️ Basic ✅ Good ✅ Good Startup ~100ms ~50ms ~200ms ~50ms Config Conf TOML Lua Conf Extensions ✅ Kittens ❌ ⚠️ Lua ⚠️ Growing
Next Steps
Kitty Kittens Explore powerful kitten extensions
Shell Configuration Configure Zsh, Fish, or Nushell
Neovim Setup Complete your development environment
Compare Terminals See all terminal options
Resources