⚡ 64 developer tools, always updated, new upstream releases land in apt within hours. Join the Discord

📅 Since , the apt mirror requires a subscription. See pricing · 🆓 There is an always-free mirror · 🔐 apt returning 401?

🐱 Install Latest kitty on Ubuntu

Fast, feature-rich, GPU based terminal emulator

Latest version: 0.49.2 · updated 2026-10-15
SourceVersion
deb.griffo.io0.49.2 ✅
Official Ubuntu0.45.0 🛑
← Back to home

What is kitty?

kitty is a GPU based terminal emulator for people who spend their day in one. It renders with OpenGL, so a build log or a wall of coloured output scrolls smoothly, and it treats the terminal as a platform rather than a text box: windows and tabs arranged by tiling layouts, a graphics protocol that draws real images inline, a keyboard protocol that lets programs tell shift+enter from enter, clickable hyperlinks, ligatures, and shell integration that knows where every prompt and every command's output begins and ends. Next to the terminal comes kitten, a single companion executable holding the small tools the terminal is built around: kitten icat shows an image, kitten ssh carries your terminfo and shell integration to a remote host, kitten diff is a side-by-side diff that handles images too, kitten clipboard, kitten themes, and kitten @ drives the terminal itself from a script. It is written by Kovid Goyal, the author of calibre, and everything is configured in one kitty.conf.

🚀 Why Latest Versions Matter: kitty releases roughly every month, and each release moves the protocols other tools build on: the graphics protocol that yazi, viu and Neovim image plugins draw with, the keyboard protocol editors negotiate, text sizing, the shell integration hooks, the remote control commands. Ubuntu 26.04 is frozen at 0.45.0, Noble stays on 0.32.2 for its whole life, and Jammy's 0.21.2 predates the standalone kitten executable altogether, so the kitten ssh and kitten icat commands in the current documentation do not exist there. An old kitty also quietly ignores the kitty.conf options the current docs tell you to set, and every newer kitten (choose-fonts, notify, quick-access-terminal, panel) is simply missing. The terminal is the one program you run all day; it should be the current one.

⚡ Key Features of kitty

🎮 GPU Rendering

kitty draws with OpenGL, handing the glyph work to the GPU and keeping the CPU for the program you are actually running. Big outputs scroll at the display's refresh rate and the terminal stays responsive under a flood of text.

🪟 Windows, Tabs and Layouts

Split a tab into windows and let a layout (tall, fat, grid, splits, stack) arrange them: ctrl+shift+enter opens a window, ctrl+shift+t a tab. A session file recreates a whole workspace, each window with its directory and its command.

🖼️ The Graphics Protocol

Real images, not block characters. kitten icat shows a picture inline, and the same protocol is what yazi, viu, Neovim image plugins and matplotlib backends use when they draw in your terminal.

🐈 Kittens

kitten is one static executable full of small tools: icat, ssh, diff, clipboard, themes, hints to pick URLs, paths or hashes off the screen by keyboard, unicode_input, transfer to copy files over an ssh session, and more.

🎛️ Remote Control

With allow_remote_control on, kitten @ drives the terminal from any script: open windows, send text to them, change colours, resize, list what is running. Scripted layouts without a multiplexer in between.

🐚 Shell Integration

kitty knows where each prompt starts: jump between prompts with ctrl+shift+z, open the last command's output in a pager, click to move the cursor inside the current line, and have new windows open in the current directory. bash, zsh and fish, shipped by kitty-shell-integration.

🚀 Always ahead of the official archives: Debian and Ubuntu freeze package versions when a release ships. This repository publishes new upstream releases typically within hours. A simple apt upgrade keeps you on the latest version.

📦 Installation from deb.griffo.io

Run the commands

Step 1: Add Repository

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud and Zed; kitty is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.

How the free mirror works →

Step 2: Install kitty

# Install latest kitty; kitty-terminfo and kitty-shell-integration come with it
sudo apt install kitty

# Optional, the HTML documentation under /usr/share/doc/kitty/html
sudo apt install kitty-doc

# Verify installation, both the terminal and the companion CLI
kitty --version
kitten --version
# Install latest kitty; kitty-terminfo and kitty-shell-integration come with it
apt install kitty

# Optional, the HTML documentation under /usr/share/doc/kitty/html
apt install kitty-doc

# Verify installation, both the terminal and the companion CLI
kitty --version
kitten --version

Step 3: First run

# Open a kitty window
kitty

# Make kitty the default terminal for x-terminal-emulator
sudo update-alternatives --config x-terminal-emulator

# The config is ~/.config/kitty/kitty.conf: ctrl+shift+f2 opens it
# inside kitty, ctrl+shift+f5 reloads it. This prints the effective one
kitty --debug-config

# Browse the bundled colour themes and apply one
kitten themes
# Open a kitty window
kitty

# Make kitty the default terminal for x-terminal-emulator
update-alternatives --config x-terminal-emulator

# The config is ~/.config/kitty/kitty.conf: ctrl+shift+f2 opens it
# inside kitty, ctrl+shift+f5 reloads it. This prints the effective one
kitty --debug-config

# Browse the bundled colour themes and apply one
kitten themes

🎯 Basic Usage Examples

Starting it:

# A terminal
kitty

# Run a command in a new kitty window and keep it open afterwards
kitty --hold htop

# Override any kitty.conf option on the command line
kitty -o font_size=14 -o background_opacity=0.9

# Start in a directory
kitty --directory ~/src

# Restore a whole workspace from a session file
kitty --session ~/.config/kitty/work.session

# What is installed?
kitty --version

The kittens:

# Show an image right in the terminal
kitten icat photo.png

# ssh with your terminfo and shell integration carried along
kitten ssh user@server

# Side-by-side diff, images included
kitten diff old.txt new.txt

# Copy to and read from the system clipboard
echo hello | kitten clipboard
kitten clipboard --get-clipboard

# Apply a theme to every running kitty window
kitten themes --reload-in=all Catppuccin-Mocha

# Pick a font interactively
kitten choose-fonts

Remote control:

# Put allow_remote_control yes in kitty.conf, then from any shell
# running inside kitty: open a new window to the right of this one
kitten @ launch --location=vsplit --cwd=current

# Type a command into another window, matched by its title
kitten @ send-text --match title:logs "tail -f /var/log/syslog\n"

# Change colours on the fly
kitten @ set-colors background=#1e1e2e

# What is open right now
kitten @ ls

🔧 Tool Integrations

kitty is the terminal under everything else, so most of the integration is about what runs inside it:

  • Remote servers: kitty sets TERM=xterm-kitty, and a host without that terminfo gives you a broken backspace and complaints from less and clear. kitten ssh copies it across for you; for the hosts you reach with plain ssh, install kitty-terminfo there, an arch-independent package that carries nothing but the terminfo entry and pulls in nothing else
  • Your shell: kitty-shell-integration ships the bash, zsh and fish hooks under /usr/share/kitty/shell-integration, and shell_integration enabled in kitty.conf, the default, turns them on without touching your rc files
  • yazi, viu and Neovim: all three draw images through the kitty graphics protocol, and Neovim speaks the kitty keyboard protocol natively, so this is the terminal they were tested in
  • Zellij and tmux: kitty's own windows, tabs and layouts cover most of what a local multiplexer does; reach for Zellij when a session must outlive the window, and give tmux extended-keys and passthrough so the kitty protocols survive the trip
  • Your desktop: the package installs the desktop entry, icons and man pages and registers the x-terminal-emulator alternative, so kitty shows up in your launcher and one update-alternatives call makes it the system default

🚀 Why Choose deb.griffo.io?

📊 Repository Comparison:
  • Official Ubuntu: ships kitty 0.45.0 in 26.04, 0.32.2 in Noble and 0.21.2 in Jammy, each frozen for the life of its release
  • The upstream installer: one curl | sh into ~/.local/kitty.app, current, but per user, with no desktop entry, man pages or x-terminal-emulator unless you wire them yourself, and updated by running the installer again
  • Building from source: Python, Go, a long list of -dev packages and a good while, for a binary apt knows nothing about
  • deb.griffo.io: latest version with automatic updates

📦 Package Build Repository

The Ubuntu packages are automatically built and maintained in this GitHub repository:

🔗 Related Packages

Also available from deb.griffo.io:

🎯 Perfect for: developers who want one terminal to replace terminal plus multiplexer, anyone who lives in ssh and wants images, diffs and the clipboard to work over the wire, people leaving Alacritty or GNOME Terminal for tabs and layouts, and users of yazi, Neovim or any tool that renders pictures in the terminal.

💝 Support This Project

If this repository saves you time and effort, please consider supporting it!

⭐ Star on GitHub 🐦 Share on Twitter

Just after the command? See apt install kitty, one page covering Debian and Ubuntu.

📦 Recent releases from this repository

📚 Release-specific install guides

❓ Frequently asked questions

Is kitty in the official Ubuntu repositories?

Yes, but the official Ubuntu archive ships kitty 0.45.0, while this repository serves kitty 0.49.2, rebuilt within hours of each upstream release.

How do I install the latest kitty on Ubuntu?

Add the deb.griffo.io repository once using the instructions above, then run: sudo apt install kitty. New releases arrive through the normal sudo apt upgrade.

Are the packages signed and how are they built?

Every package is signed with the repository's GPG key (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) and built from upstream releases in public GitHub packaging repositories that anyone can inspect.

Which Ubuntu releases are supported?

Ubuntu 22.04 Jammy, 24.04 Noble, 25.10 Questing and 26.04 Resolute.