Profile
Back to NewsBack
Hacker News 8 min
Reader Mode
Kitty 0.50

Kitty 0.50

4 hours ago

Recent major new features

Docked windows [0.50]

kitty windows can now be docked to an edge of another window or of the tab. Docked windows are placed outside the layout, making them perfect for status bars, file trees or a shell kept next to your editor. A dock attached to a window follows it around, moving with it to other tabs and closing when it closes. Create docks with launch --type=window-dock or launch --type=tab-dock. Docks are saved in sessions too.

Restore after logout [0.50]

Like other applications, kitty can now save its state when you log out, restart or shut down your computer, and restore it the next time it starts. Simply set restore_session_after_logout and every kitty instance comes back with all its OS Windows, tabs and windows in place, including their scrollback. On macOS, the saved state is encrypted using a key stored in your keychain. See Restoring kitty after logging out for details.

Custom shaders [0.49]

kitty now has official support for Custom Shaders. These can be used for all manner of graphical effects, from animated backgrounds to focus highlighting to animations that change how cursor movements or mouse clicks are visualised.

See the documentation for a video gallery showcasing various custom shaders that ship with kitty.

Performance improvements [0.49]

This release saw tons of performance work focused on improving throughput making kitty even faster than it already is. Real world effective throughput should see a 15-35% improvement depending on workload. Some details:

  1. Improve throughput when processing large amounts of text with a scrollback buffer much larger than the CPU cache by ~35% by prefetching scrollback memory before it is written to

  2. Improve throughput when processing large amounts of text by ~50% for ASCII and ~15% for Unicode by writing runs of plain ASCII chars to the screen in batches and skipping unnecessary bookkeeping in the scrolling and tab handling hot paths

  3. Speed up SIMD UTF-8 decoding: ~20% faster for ASCII and ~50% faster for multi-byte text on both x86 and ARM, by processing pairs of vectors of plain ASCII text at a time and compacting decoded codepoints within 128-bit lanes, avoiding expensive cross-lane operations. Also add an AVX-512 based decoder, another ~75% faster for multi-byte text, used automatically on CPUs that support it (Intel Ice Lake+, AMD Zen 4+).

  4. Improve throughput when processing escape code heavy input by ~30% by taking the input buffer lock once per buffer of input rather than once per escape code and using cheaper arithmetic to parse CSI parameters

  5. Improve throughput when processing large amounts of plain text by another ~10% by finding runs of printable ASCII chars with SIMD, filling cells using wide stores and skipping unnecessary work in the scrolling hot path when there are no images

  6. Speed up pixel compositing with SIMD vectorization: alpha blending of graphics protocol images and animation frames is 2-3.5x faster and glyph alpha masks are composited onto canvases using the same vectorized primitives.

  7. Cache HarfBuzz results for repeated short runs (≤32 cells) so redraws of the same on-screen text are not reshaped

Vertical tabs [0.48]

kitty now has support for vertical tabs along the left or right edge of the OS Window. Useful for people that have wide aspect ratio windows.

Drag and drop for terminal programs [0.47]

kitty now has a new Drag and Drop kitten that allows you to seamlessly drag and drop files between kitty and any GUI program like the OS file manager or a webapp. It even works over SSH! It is powered by a new protocol allowing the use of drag and drop from any TUI program.

Mousing [0.46]

kitty already had excellent mouse support, but now it is taking it to the next level. The kitty scrollback buffer grew support for smooth scrolling and momentum based scrolling for a natural, smooth and kinetic scrolling experience.

Additionally, you can now drag kitty tabs around with the mouse to re-order them, move them to another kitty OS Window or even detach them into their own OS Window.

Finally, a long requested feature, the ability to resize kitty windows (aka splits) with the mouse was implemented.

Choose files, fast [0.45]

A new kitten to select files at the speed of thought with a keyboard first interface and support for content previews of text files with syntax highlighting, images, videos, e-books and more. Allows you to select files for use at the shell prompt or other terminal workflows with just a few keystrokes, similar to how fuzzy finders like fzf operate, but designed for files in particular, leveraging the various innovations of kitty such as image display and variable sized text.

On Linux, it can even be used as a drop in replacement for the File Open/Save dialog boxes in GUI programs.

Sessions [0.43]

kitty has long had support for Sessions, aka simple text files where you can define what tabs, windows and programs you wish to run in kitty. Now in addition to that kitty has the ability to create and switch between sessions with a single keypress and also to manually setup some tabs/windows in kitty and save it as a session file, for seamless and intuitive session file creation.

A scrollbar for the kitty scrollback [0.43]

A long requested feature, kitty has finally gotten a scrollbar that can be used with the mouse for browsing its scrollback. The bar appear automatically when you start scrolling backwards and is extensively configurable in kitty.conf. Note that the old scrollback_indicator_opacity option is deprecated.

Multiple cursors [0.43]

kitty has pioneered a new escape code protocol that allows terminal applications to use multiple cursors, rendered natively. These are typically used in editors to make the same edit at multiple locations. Now terminal based editors can use properly rendered native cursors, just like their GUI cousins, at last.

Access kitty with a single keypress [0.42]

kitty now has a Quake like floating, translucent terminal window, so you can access all that kitty goodness instantly with a single keypress.

See the screenshots on the side and head over to the kitten page for details on how to set it up.

Multiple sized text [0.40]

kitty is the first major terminal to introduce the concept of multiple sized text. Terminal programs running in kitty can now opt-in to use and display text in multiple font sizes both larger and smaller than the base font size. This is done in a backwards compatible, opt-in way that does not affect how traditional terminal programs work at all. For details on the new feature and how to use it, see The text sizing protocol.

Cursor trails [0.37]

Show an animated trail when the text cursor makes large jumps making it easy to follow cursor movements. Inspired by the similar feature in neovide, but works with terminal multiplexers and kitty windows as well. See the pull request for a demonstration video. This feature is optional and must be turned on by the cursor_trail option in kitty.conf.

Variable font support [0.36]

Terminal aficionados spend all day staring at text, so getting text rendering just right is very important. In that spirit, kitty now supports OpenType Variable fonts. These allow precise customisation of font characteristics, such as weight and spacing. Not only that, kitty now has a new choose-fonts kitten that provides a UI for choosing fonts with support for font features, variable fonts and previews of how the font will look. This is in addition to its existing best-in-class font customization abilities, such as: symbol_map, text_composition_strategy, font_features and modify_font. kitty knows text rendering is important, and goes the extra mile for it.

Desktop notifications [0.36]

kitty now has a notify kitten that can be used to display desktop notifications from the command line, even over SSH. It has support for icons, buttons, updating notifications, waiting till the notification is closed, etc. The underlying Desktop notifications protocol has been expanded to support all these features.

Wayland goodies [0.34]

Wayland users should rejoice as kitty now comes with major Wayland quality-of-life improvements:

  • Draw GPU accelerated desktop panels and background running arbitrary terminal programs. For example, run btop as your desktop background

  • Background blur for transparent windows is now supported under KDE using a custom KDE specific protocol

  • The kitty window decorations in GNOME are now fully functional with buttons and they follow system dark/light mode automatically

  • kitty now supports fractional scaling in Wayland which means pixel perfect rendering when you use a fractional scale with no wasted performance on resizing an overdrawn pixmap in the compositor

With this release kitty’s Wayland support is now on par with X11, provided you use a decent Wayland compositor.

Chat with me