Skip to main content
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

1

Install Kitty

brew install --cask kitty
2

Install IosevkaTerm Nerd Font

# macOS
brew tap homebrew/cask-fonts
brew install font-iosevka-term-nerd-font

# Linux - Download from nerdfonts.com
3

Link Gentleman.Dots configuration

# Create config directory
mkdir -p ~/.config/kitty

# Link the entire GentlemanKitty directory
ln -sf ~/Gentleman.Dots/GentlemanKitty/* ~/.config/kitty/
4

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

kitty.conf
# 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

kitty.conf
# 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)

kitty.conf
# 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

kitty.conf
# 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

kitty.conf
# 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

kitty.conf
# 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

kitty.conf
# 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:
# Beautiful side-by-side diff viewer
kitty +kitten diff file1.txt file2.txt

Window/Tab Management

Kitty has sophisticated tiling:
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:
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
# ~/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:
kitty.conf
# 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"

Performance Tips

Optimize for Large Scrollback

kitty.conf
# 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 Latency

kitty.conf
# Reduce input delay (in milliseconds)
repaint_delay 10

# Sync screen updates to monitor refresh
sync_to_monitor yes

Troubleshooting

Font Issues

1

List available fonts

kitty +list-fonts
# Shows all fonts Kitty can find
2

Test font rendering

kitty +list-fonts --psnames | grep -i iosevka
# Verify IosevkaTerm is available
3

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

Performance Problems

# 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

FeatureKittyAlacrittyWezTermGhostty
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
ConfigConfTOMLLuaConf
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

Build docs developers (and LLMs) love