Kitty
GPU-accelerated terminal with image display, tabs/windows, and Python extensions.
Official WebsiteFeatures
Installation
brew install --cask kittyapt install kittypacman -S kittyWhy Use Kitty?
Kitty is a GPU-based terminal emulator aiming to achieve "both functionality and performance." In addition to fast rendering using OpenGL, it has built-in features such as image display, tabs, and pane splitting. It is extensible with Python and offers very high customizability.
Image Display Feature
Display images directly in the terminal. Use the icat command to view PNG, JPEG, GIF, and even animated GIFs.
Tabs & Pane Splitting
Tabs and window splitting without tmux. Supports multiple layouts (stack, tall, fat, grid, etc.).
Fast GPU Rendering
Fast rendering using OpenGL. Full support for ligatures, True Color, and emoji for visually beautiful display.
Extensible with Python
Create Kittens (extensions) in Python. Provides many built-in Kittens including SSH remote control, diff display, and unicode input.
Main Features
Kittens (Extensions)
Extension system written in Python. Built-in Kittens include:
icat- Image displaydiff- File diff displayssh- Enhanced SSH clientunicode_input- Unicode character inputhints- URL/path selectionclipboard- Clipboard operations
Remote Control
Control Kitty from scripts or command line. Programmatically create tabs, change font size, retrieve scrollback, and more.
Session Management
Define window layouts, tabs, and startup commands in session files. Reproduce your development environment instantly.
Advanced Font Features
Full support for programming ligatures, variable fonts, and font substitution via symbol maps.
Installation
macOS
# Install via Homebrew
brew install --cask kitty
# Official installer (latest version)
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdinLinux
# Official installer (recommended, gets latest version)
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
# Create desktop shortcuts
ln -sf ~/.local/kitty.app/bin/kitty ~/.local/kitty.app/bin/kitten ~/.local/bin/
cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications/
cp ~/.local/kitty.app/share/applications/kitty-open.desktop ~/.local/share/applications/
# Ubuntu/Debian
sudo apt install kitty
# Arch Linux
sudo pacman -S kitty
# Fedora
sudo dnf install kittyNote: Windows is not natively supported. Use the Linux version inside WSL2 or consider other terminal emulators.
Configuration Files
Place configuration files at the following path (Kitty native format):
~/.config/kitty/kitty.conf(Linux/macOS)
Basic Configuration Example
# Font settings
font_family JetBrains Mono
bold_font auto
italic_font auto
bold_italic_font auto
font_size 14.0
# Enable font ligatures
disable_ligatures never
# Cursor settings
cursor_shape block
cursor_blink_interval 0.5
cursor_stop_blinking_after 15.0
# Scrollback
scrollback_lines 10000
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
# Mouse settings
mouse_hide_wait 3.0
url_style curly
open_url_with default
url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh
# Window settings
remember_window_size yes
initial_window_width 120c
initial_window_height 36c
window_padding_width 10
window_margin_width 0
# Background transparency
background_opacity 0.95
dynamic_background_opacity yes
# Tab bar
tab_bar_edge bottom
tab_bar_style powerline
tab_powerline_style slanted
tab_title_template "{index}: {title}"
# Disable audio bell
enable_audio_bell no
visual_bell_duration 0.0
# Environment variables
env TERM=xterm-256colorColor Scheme Example (One Dark)
# One Dark color scheme
foreground #abb2bf
background #282c34
# Black
color0 #282c34
color8 #545862
# Red
color1 #e06c75
color9 #e06c75
# Green
color2 #98c379
color10 #98c379
# Yellow
color3 #e5c07b
color11 #e5c07b
# Blue
color4 #61afef
color12 #61afef
# Magenta
color5 #c678dd
color13 #c678dd
# Cyan
color6 #56b6c2
color14 #56b6c2
# White
color7 #abb2bf
color15 #c8ccd4
# Selection color
selection_foreground #282c34
selection_background #979eab
# URL color
url_color #61afef
# Cursor color
cursor #528bff
cursor_text_color #282c34Keybinding Configuration Example
# Keybinding settings
# Clipboard
map ctrl+shift+c copy_to_clipboard
map ctrl+shift+v paste_from_clipboard
# Font size
map ctrl+plus change_font_size all +2.0
map ctrl+minus change_font_size all -2.0
map ctrl+0 change_font_size all 0
# Tab operations
map ctrl+shift+t new_tab
map ctrl+shift+q close_tab
map ctrl+shift+right next_tab
map ctrl+shift+left previous_tab
map ctrl+shift+. move_tab_forward
map ctrl+shift+, move_tab_backward
map ctrl+alt+1 goto_tab 1
map ctrl+alt+2 goto_tab 2
map ctrl+alt+3 goto_tab 3
# Window (pane) operations
map ctrl+shift+enter new_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
# Layout
map ctrl+shift+l next_layout
# Scroll
map ctrl+shift+up scroll_line_up
map ctrl+shift+down 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
# Search
map ctrl+shift+f launch --type=overlay --stdin-source=@screen_scrollback fzf --no-sort --tac
# Kittens
map ctrl+shift+e open_url_with_hints
map ctrl+shift+p>f kitten hints --type path --program -
map ctrl+shift+p>l kitten hints --type line --program -
map ctrl+shift+p>w kitten hints --type word --program -
# Enable remote control (if needed)
# allow_remote_control yes
# listen_on unix:/tmp/kittySession File Example
# Development session
# Usage: kitty --session ~/.config/kitty/sessions/dev.conf
# New tab: Editor
new_tab editor
cd ~/projects/myapp
launch nvim
# New tab: Server
new_tab server
cd ~/projects/myapp
launch npm run dev
# New tab: Terminal
new_tab terminal
cd ~/projects/myapp
launch zsh
# New tab: Git
new_tab git
cd ~/projects/myapp
layout tall
launch lazygit
launch zsh
# Focus first tab
focus_tab 0Keyboard Shortcuts
Default keyboard shortcuts list (kitty_mod is Ctrl+Shift by default):
Basic Operations
| Action | Keys |
|---|---|
| Copy | Ctrl + Shift + C |
| Paste | Ctrl + Shift + V |
| Increase Font Size | Ctrl + Shift + = |
| Decrease Font Size | Ctrl + Shift + - |
| Scrollback Search | Ctrl + Shift + H |
| Reload Configuration | Ctrl + Shift + F5 |
| Show Debug Config | Ctrl + Shift + F6 |
Tab Operations
| Action | Keys |
|---|---|
| New Tab | Ctrl + Shift + T |
| Close Tab | Ctrl + Shift + Q |
| Next Tab | Ctrl + Shift + Right |
| Previous Tab | Ctrl + Shift + Left |
| Go to Tab N | Ctrl + Alt + 1-9 |
Window (Pane) Operations
| Action | Keys |
|---|---|
| New Window | Ctrl + Shift + Enter |
| Close Window | Ctrl + Shift + W |
| Next Window | Ctrl + Shift + ] |
| Previous Window | Ctrl + Shift + [ |
| Switch Layout | Ctrl + Shift + L |
| Start Window Resize | Ctrl + Shift + R |
Useful Commands
# Display image (icat kitten)
kitty +kitten icat image.png
# Display file diff (diff kitten)
kitty +kitten diff file1.txt file2.txt
# Connect via SSH (ssh kitten - with shell integration)
kitty +kitten ssh user@hostname
# Input Unicode characters
kitty +kitten unicode_input
# Highlight and select URLs
kitty +kitten hints
# Copy to clipboard
kitty +kitten clipboard
# Check configuration
kitty --debug-config
# Check version
kitty --version
# Open new OS window
kitty @ launch --type=os-window
# Create tab remotely (when remote control is enabled)
kitty @ new-tab --title "remote tab"
# Save scrollback to file
kitty @ get-text --match "id:1" > scrollback.txtTips
Using Image Preview
With kitty +kitten icat, you can view screenshots and icons in the terminal. Works great with file managers like ranger or lf.
Shell Integration
Enabling shell integration allows you to directly select command output, retrieve the last command's output from scrollback, jump to prompts, and more. Add shell_integration enabled to~/.config/kitty/kitty.conf.
Multiple Configuration Files
Use the include other.conf directive to split configuration. Useful for managing theme files separately or switching settings per environment.
Importing Themes
Use kitty +kitten themes command to interactively select and apply from over 200 themes.
Enhanced SSH
With kitty +kitten ssh, you can use Kitty's features (image display, shell integration, etc.) on remote hosts. terminfo is automatically transferred.
Startup Sessions
Use the startup_session option to specify a session file at startup. Convenient for quickly restoring project-specific layouts.
Related Articles
Alacritty - GPU-Accelerated Terminal
Fast, cross-platform GPU-accelerated terminal emulator
WezTerm - GPU-Accelerated Terminal
GPU-accelerated cross-platform terminal with Lua configuration
iTerm2 - macOS Terminal Emulator
Feature-rich terminal emulator for macOS