Kitty [terminal emulator] chases the mouse

leephillips2 pts0 comments

Kitty chases the mouse [LWN.net]

LWN<br>.net<br>News from the source

Content Weekly Edition<br>Archives<br>Search<br>Kernel<br>Security<br>Events calendar<br>Unread comments

LWN FAQ<br>Write for us

Edition Return to the Front page

User:<br>Password: |

Log in /<br>Subscribe /<br>Register

Kitty chases the mouse

Please consider subscribing to LWN

Subscriptions are the lifeblood of LWN.net. If you appreciate this<br>content and would like to see more of it, your subscription will<br>help to ensure that LWN continues to thrive. Please visit<br>this page to join up and keep LWN on<br>the net.

July 9, 2026

This article was contributed by Lee Phillips

Kitty is a terminal<br>emulator that<br>runs on Linux, macOS, and the BSDs, which is notable for its speed and features<br>such as image support and advanced font handling. It is under active development; a<br>recent major release adds a<br>new level of mouse support. Here, we will look at some of those features<br>and show how the program can also be used as platform for<br>text-based applications. Kitty is free software, released<br>under the GPLv3.

Features

Kitty is a GPU-based terminal emulator. As with several other currently<br>popular terminal emulators, use of the GPU provides it with enough bandwidth<br>to dump megabytes of text onto the screen in an instant. This is a welcome<br>virtue when accidentally displaying a huge file using cat, but the<br>GPU also enables<br>smooth exploration of the scrollback buffer. Kitty is designed to have low<br>latency, which refers to the time between striking a key and the<br>appearance of the corresponding character on the screen. This is a property<br>that users are often not consciously aware of, but that has an important effect on the satisfaction and<br>well-being of the terminal jockey.

Kovid<br>Goyal created kitty when he became dissatisfied<br>with the speed of the terminal emulator he was using [YouTube interview video] and decided to make a faster<br>one. He then began to add features, starting with colored underlines, that<br>he wanted but existing programs didn't support.

Kitty is thoroughly customizable through a configuration file. The user can<br>define keyboard shortcuts or mouse actions for dozens of commands. The<br>options go far beyond the usual appearance and keyboard shortcut settings;<br>for example, there are several parameters exposed for performance<br>tuning. In recent kitty versions, changes to the settings go into effect<br>immediately upon saving the configuration file.

Font handling in<br>kitty is flexible—as<br>long as "fonts" does not include bitmap fonts, which kitty does not and will<br>not support because they do not scale arbitrarily. Kitty can use any<br>monospace TrueType or OpenType font and change its size on the fly with a<br>keyboard shortcut.

Ligatures are supported (but, thankfully, can be<br>disabled), as are alternative glyph shapes in OpenType and variable<br>fonts. Separate fonts for normal, italic, and boldfaced text can be<br>defined. In the configuration file, the user can also tell<br>kitty which font to use for which Unicode codepoints, or range of<br>codepoints. This is useful if, for example, a favorite coding font doesn't<br>have good Unicode coverage, or if different fonts do a better job at<br>rendering certain glyphs. There are parameters available to adjust font<br>metrics and things like the position and thickness of underlines and<br>strikethroughs; even how kitty composites text onto the background color can be<br>adjusted.

If the user permits,<br>kitty<br>can override the colors chosen by an application<br>running in the terminal when they would lead to insufficient contrast between<br>foreground and background. I have this turned on, as it protects me<br>against, for example, carelessly defining too similar foreground and<br>background colors for a Vim highlight. As the documentation points<br>out: "Terminal aficionados spend all day staring at text, [so] getting<br>text rendering just right is very important."

Kittens

Kitty comes bundled with a handful of auxiliary programs called "kittens" that<br>provide extra functionality and customization to the program. They<br>are invoked with keyboard shortcuts or by executing the kitten<br>command with an argument to select the desired kitten in the shell.<br>The kitten command with no argument will display the list of available kittens. For brief documentation of any of them,<br>a -h flag is provided; for example, kitten ssh -h for a<br>guide to using the ssh kitten.

Kitty is designed to be extendable by the user. To this end kittens are<br>implemented as external Python programs using an API that allows<br>them to control kitty and gives them access to the text in a kitty window<br>and in its scrollback buffer.

There are many kittens available; here I will mention some of the especially<br>useful ones that come bundled with kitty.<br>The ssh<br>kitten wraps the system's ssh command to ensure that the remote<br>connection plays well with kitty, mainly by transmitting<br>the needed terminfo<br>setting and enabling shell integration (more on that below) on the remote<br>machine; it also brings other conveniences, such as<br>reusing...

kitty terminal text font kitten mouse

Related Articles