Terminal GuideTerminal Guide
kitty icon

Kitty

Terminal Emulators
macOSLinux
Python/C

GPU-accelerated terminal with image display, tabs/windows, and Python extensions.

Official Website

Features

GPU AccelerationImage DisplayTabs & WindowsKittens (Extensions)Remote Control

Installation

Homebrew
brew install --cask kitty
APT (Debian/Ubuntu)
apt install kitty
Pacman (Arch)
pacman -S kitty

Why 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 display
  • diff - File diff display
  • ssh - Enhanced SSH client
  • unicode_input - Unicode character input
  • hints - URL/path selection
  • clipboard - 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

Homebrew
# Install via Homebrew
brew install --cask kitty

# Official installer (latest version)
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin

Linux

Linux
# 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 kitty

Note: 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

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

Color Scheme Example (One Dark)

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

Keybinding Configuration Example

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

Session File Example

~/.config/kitty/sessions/dev.conf
# 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 0

Keyboard Shortcuts

Default keyboard shortcuts list (kitty_mod is Ctrl+Shift by default):

Basic Operations

ActionKeys
CopyCtrl + Shift + C
PasteCtrl + Shift + V
Increase Font SizeCtrl + Shift + =
Decrease Font SizeCtrl + Shift + -
Scrollback SearchCtrl + Shift + H
Reload ConfigurationCtrl + Shift + F5
Show Debug ConfigCtrl + Shift + F6

Tab Operations

ActionKeys
New TabCtrl + Shift + T
Close TabCtrl + Shift + Q
Next TabCtrl + Shift + Right
Previous TabCtrl + Shift + Left
Go to Tab NCtrl + Alt + 1-9

Window (Pane) Operations

ActionKeys
New WindowCtrl + Shift + Enter
Close WindowCtrl + Shift + W
Next WindowCtrl + Shift + ]
Previous WindowCtrl + Shift + [
Switch LayoutCtrl + Shift + L
Start Window ResizeCtrl + Shift + R

Useful Commands

Terminal
# 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.txt

Tips

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.

Written by Dai AokiPublished: 2026-01-20

Related Articles

Explore More