AWS Builder Center
Kitty Terminal: A Fast, GPU-Powered Terminal for Daily Developer Work

Kitty Terminal: A Fast, GPU-Powered Terminal for Daily Developer Work

A practical guide to the Kitty terminal emulator: what makes it fast, how to install and configure it, and how to use its layouts, kittens, and remote control to build a keyboard-driven workflow for SSH, cloud, and local development.

Why look at your terminal again?

Most developers spend hours a day in a terminal but rarely question which one they use. Kitty is worth a look. It's a cross-platform (Linux and macOS) terminal emulator created by Kovid Goyal, who also wrote Calibre. It renders text on the GPU, has tabs and split windows built in, and you can script it from outside the terminal.
This article covers what makes Kitty different, how to set it up, and the features that will save you the most time.

What makes Kitty different

  • GPU rendering: Kitty draws text with OpenGL. Scrolling large logs, running tail -f, or dumping big JSON responses stays smooth and responsive.
  • Built-in tabs and splits: You don't need tmux to work in multiple panes locally. Kitty has its own windows, tabs, and layouts.
  • Kittens: These are small add-on programs that ship with Kitty. They can show images in the terminal, compare files side by side, pick themes, and improve SSH sessions.
  • Remote control: You can control a running Kitty instance with kitty @ commands, so it's easy to automate.
  • Modern protocols: Kitty introduced a terminal graphics protocol and an extended keyboard protocol that other terminals and tools now support.
  • Plain-text configuration: Everything lives in one well-commented file that's easy to keep under version control.

Installation

Official installer (Linux and macOS):
1
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
Package managers:
1
2
3
4
5
6
7
8
9
10
11
# Fedora
sudo dnf install kitty

# Ubuntu / Debian
sudo apt install kitty

# Arch
sudo pacman -S kitty

# macOS (Homebrew)
brew install --cask kitty
Distribution packages can lag behind upstream. Use the official installer if you want the latest features.

Configuration basics

Kitty reads its configuration from ~/.config/kitty/kitty.conf. Press Ctrl+Shift+F2 to open it in your editor and Ctrl+Shift+F5 to reload it without restarting.
Here's a small starting configuration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Fonts
font_family JetBrains Mono
font_size 12.0

# Window and tab appearance
window_padding_width 6
tab_bar_style powerline
tab_bar_edge bottom

# Behaviour
enable_audio_bell no
scrollback_lines 10000
copy_on_select yes

# Layouts to cycle through
enabled_layouts tall,fat,grid,splits,stack

# Allow scripting via `kitty @`
allow_remote_control yes
To pick a color scheme interactively with a live preview, run:
1
kitten themes

Essential keyboard shortcuts

Kitty's modifier key (kitty_mod) defaults to Ctrl+Shift.
ActionShortcut
New window (split)Ctrl+Shift+Enter
New tabCtrl+Shift+T
Next / previous tabCtrl+Shift+Right / Ctrl+Shift+Left
Cycle layoutsCtrl+Shift+L
Close windowCtrl+Shift+W
Browse scrollback in a pagerCtrl+Shift+H
Open URLs with hintsCtrl+Shift+E
Increase / decrease font sizeCtrl+Shift+= / Ctrl+Shift+-
Edit configCtrl+Shift+F2
Reload configCtrl+Shift+F5
You can remap any of these in kitty.conf, for example:
1
2
map ctrl+shift+backslash launch --location=vsplit --cwd=current
map ctrl+shift+minus launch --location=hsplit --cwd=current

Layouts: splits without tmux

Kitty arranges windows inside a tab according to the active layout:
  • tall / fat: one large main window with the others stacked beside or below it
  • grid: all windows in an even grid
  • splits: freeform horizontal and vertical splits, similar to tmux
  • stack: one window at a time, full screen (useful for zooming in on a pane)
A common setup is the splits layout with an editor on the left, a test watcher on the right, and a shell underneath. Switch to stack when you need to focus on one pane.

Kittens worth knowing

SSH with Kitty features on the remote host:
1
kitten ssh ec2-user@my-instance
kitten ssh copies Kitty's terminfo and shell integration to the remote host automatically. That avoids the common 'xterm-kitty': unknown terminal type error you can get on fresh EC2 instances or containers.
Show images in the terminal:
1
kitten icat architecture-diagram.png
Compare files side by side with syntax highlighting:
1
kitten diff old-template.yaml new-template.yaml
You can also set it as your Git difftool:
1
2
3
git config --global diff.tool kitty
git config --global difftool.kitty.cmd 'kitten diff $LOCAL $REMOTE'
git difftool
Other useful kittens:
  • kitten unicode_input to search for and insert any Unicode character
  • kitten clipboard to read and write the system clipboard, even over SSH
  • kitten hints to select URLs, paths, or hashes on screen using only the keyboard

Automating Kitty with remote control

With allow_remote_control yes set, you can control Kitty from scripts:
1
2
3
4
5
6
7
8
# Open a new tab titled "logs" that tails a file
kitty @ launch --type=tab --tab-title logs tail -f /var/log/app.log

# Send text to a specific window
kitty @ send-text --match title:logs "clear\n"

# Change colors on the fly (handy for flagging production shells)
kitty @ set-colors background=#3b0000
One practical example: add a wrapper or shell hook that turns the background red whenever you connect to a production account or host. It's a simple visual guardrail against running commands in the wrong environment.

Sessions: start your workspace with one command

A session file describes the tabs, layouts, and commands to open at startup:
1
2
3
4
5
6
7
8
9
10
11
12
13
# ~/.config/kitty/dev.session
new_tab editor
layout splits
cd ~/projects/my-service
launch nvim

new_tab infra
cd ~/projects/my-service/infra
launch zsh
launch --location=vsplit zsh

new_tab logs
launch zsh
Start it with:
1
kitty --session ~/.config/kitty/dev.session

Kitty compared with alternatives

KittyAlacrittyWezTermiTerm2
GPU renderingYesYesYesPartial
Built-in tabs and splitsYesNoYesYes
Inline imagesYes (own protocol)NoYesYes
Scriptingkitty @LimitedLuaAppleScript / Python
PlatformsLinux, macOSLinux, macOS, WindowsLinux, macOS, WindowsmacOS
If you need Windows support, WezTerm or Alacritty are better choices. On Linux and macOS, Kitty combines speed, built-in features, and scripting better than any of the others.

Tips and gotchas

  • Use kitten ssh instead of ssh. It avoids most terminfo problems on remote hosts. You can add alias ssh="kitten ssh".
  • Keep tmux for persistence. Kitty splits are local. If you need sessions that survive a disconnect on a remote server, keep using tmux or screen there.
  • Store your config in your dotfiles repo. kitty.conf is plain text and works on every machine.
  • Read the generated default config. Every option is documented inline, and it's the fastest way to learn what Kitty can do.

Wrapping up

Kitty is fast, scriptable, and has the features you'd otherwise get by combining a terminal, tmux, and a few CLI utilities. Install it, run kitten themes, learn five shortcuts, and switch your ssh to kitten ssh. Within a week you'll probably have a session file that opens your whole development environment with one command.
Resources
  • Official documentation: https://sw.kovidgoyal.net/kitty/
  • Source code: https://github.com/kovidgoyal/kitty
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article