Sei sulla pagina 1di 3

kitty - the fast, featureful, GPU based

terminal emulator
 Offloads rendering to the GPU for lower system load and buttery smooth scrolling. Uses
threaded rendering to minimize input latency.
 Supports all modern terminal features: graphics (images), unicode, true-color, OpenType
ligatures, mouse protocol, focus tracking, bracketed paste and several new terminal
protocol extensions.
 Supports tiling multiple terminal windows side by side in different layouts without
needing to use an extra program like tmux
 Can be controlled from scripts or the shell prompt, even over SSH.
 Has a framework for Kittens, small terminal programs that can be used to extend kitty's
functionality. For example, they are used for Unicode input, Hints and Side-by-side diff.
 Supports startup sessions which allow you to specify the window/tab layout, working
directories and programs to run on startup.
 Cross-platform: kitty works on Linux and macOS, but because it uses only OpenGL for
rendering, it should be trivial to port to other Unix-like platforms.
 Allows you to open the scrollback buffer in a separate window using arbitrary programs
of your choice. This is useful for browsing the history comfortably in a pager or editor.

Pre-built binaries of kitty are available for both macOS and Linux. See the binary install
instructions. You can also build from source.

If you are on Linux, you can also use your distribution's kitty package. kitty packages are
available for: Debian, openSUSE, Arch Linux, NixOS, Gentoo, Fedora, Void Linux.

See Configuring kitty for help on configuring kitty and Invocation for the command line
arguments kitty supports.

Design philosophy
kitty is designed for power keyboard users. To that end all its controls work with the keyboard
(although it fully supports mouse interactions as well). Its configuration is a simple, human
editable, single file for easy reproducibility (I like to store configuration in source control).

The code in kitty is designed to be simple, modular and hackable. It is written in a mix of C (for
performance sensitive parts) and Python (for easy hackability of the UI). It does not depend on
any large and complex UI toolkit, using only OpenGL for rendering everything.

Finally, kitty is designed from the ground up to support all modern terminal features, such as
unicode, true color, bold/italic fonts, text formatting, etc. It even extends existing text formatting
escape codes, to add support for features not available elsewhere, such as colored and styled
(curly) underlines. One of the design goals of kitty is to be easily extensible so that new features
can be added in the future with relatively less effort.

Tabs and Windows

kitty is capable of running multiple programs organized into tabs and windows. The top level of
organization is the Tab. Each tab consists of one or more windows. The windows can be arranged
in multiple different layouts, like windows are organized in a tiling window manager. The
keyboard controls (which are all customizable) for tabs and windows are:

This will make the tall window occupy 70% of available width. bias can be any number between 10 and

Writing a new layout only requires about a hundred lines of code, so if there is some layout you want,
take a look at and submit a pull request!


kitty has a framework for easily creating terminal programs that make use of its advanced features.
These programs are called kittens. They are used both to add features to kitty itself and to create useful
standalone programs. Some prominent kittens:


Display images in the terminal


A fast, side-by-side diff for the terminal with syntax highlighting and images

Unicode Input

Easily input arbitrary unicode characters in kitty by name or hex code.


Select and open/paste/insert arbitrary text snippets such as URLs, filenames, words, lines, etc from the
terminal screen.


Draw a GPU accelerated dock panel on your desktop showing the output from an arbitrary terminal


Copy/paste to the clipboard from shell scripts, even over SSH.

You can also Learn to create your own kittens.

Configuring kitty
kitty is highly configurable, everything from keyboard shortcuts to painting frames-per-second. For
details and a sample kitty.conf, see the configuration docs.

Remote control

kitty has a very powerful system that allows you to control it from the shell prompt, even over SSH. You
can change colors, fonts, open new windows, tabs, set their titles, change window layout, get text from
one window and send text to another, etc, etc. The possibilities are endless. See the tutorial to get

Startup Sessions

You can control the tabs, window layout, working directory, startup programs, etc. by creating a
"session" file and using the kitty --session command line flag or the startup_session option in kitty.conf.
For example: