Features

The features Wintty supports and associated documentation.

Wintty is a very feature-rich terminal.

Terminal features can be divided into two categories: features for end-users and features for terminal application developers.

Features for end-users are things like multi-window, tabs, splits, ligatures, auto-update, etc. These are features that make using a terminal more pleasant without requiring any changes to the running terminal applications (such as your shell, text editor, etc.).

Features for terminal application developers are things like the Kitty graphics protocol, Kitty keyboard protocol, synchronized rendering, light/dark mode notifications, etc. These features allow terminal applications to do more than they could in other terminal emulators. While these features are not directly used by end-users, end-users benefit from them because terminal applications they use every day can do more.

Feature Highlight

Here is a list highlighting some of the larger or more interesting features that Wintty supports:

  • Native to Windows: Wintty is the Windows fork of Ghostty. It is a WinUI 3 application and uses native UI components throughout, so it behaves the way other Windows applications do. If you are on macOS or Linux, you want Ghostty instead.

  • Windows, tabs, and splits: Wintty supports multiple windows, each with its own tabs and splits. These are all rendered using native UI components.

  • GPU-accelerated rendering: Wintty renders the terminal screen with DirectX 12, using DXGI swap chains and DirectComposition.

  • Themes: Wintty ships with hundreds of themes that can be selected with a single line of configuration. Themes can be switched automatically based on system dark/light mode. Users can author their own themes.

  • Ligatures: You can use fonts that have ligatures and Wintty will render them correctly. You can also specify specific font features to enable or disable.

  • Grapheme clustering: Multi-codepoint emoji such as flags, skin tones, etc. are rendered correctly as a single character. Individual grapheme clusters in certain right-to-left scripts like Arabic and Hebrew are also rendered correctly, although only left-to-right text is supported.

  • Kitty graphics protocol: Wintty supports the Kitty graphics protocol, which allows terminal applications to render images directly in the terminal.

Platform-Native Features

One of the primary design goals of Wintty is to look, feel, and behave like a purpose-built Windows application rather than a cross-platform one that happens to run here. Some of what that means in practice:

  • Native Tabs and Splits: Real WinUI 3 components for tabs and splits, not custom-drawn text inside the terminal grid the way many other terminal emulators do it.
  • Quick Terminal: A drop-down terminal on a global hotkey, for when you want a shell without switching windows.
  • Command Palette: Search and run any action from the command palette instead of remembering a chord for it.
  • Mica and Acrylic: The Windows 11 backdrop materials, so the window sits in the desktop the way other Windows 11 applications do.
  • Shell Integration: Taskbar progress reporting and desktop notifications, driven by escape sequences the shell emits.
  • Jump Lists: New Window and New Tab tasks on the taskbar jump list, built from your configuration rather than from shell activity.
  • Screen Reader Support: A UI Automation provider exposes the terminal grid, the cursor and selection, so Narrator and NVDA can read it.

Terminal (VT) Features

For terminal application developers, we believe Wintty is one of the most modern and comprehensive terminal emulators available1. Our goal with Wintty is to be the most compatible for legacy applications while also providing the most modern features for new applications.

What that means in practice is that Wintty supports a wide range of control sequences, terminal features, and terminal protocols. And to determine the behavior of these features, we follow the following principles:

  1. Xterm compatibility: xterm is the de facto standard for terminal emulation. If xterm does something, we should do the same thing2.

  2. Protocol origin compatibility: If the terminal that defined a protocol behaves a certain way, we should follow that behavior, even if it is not specified3.

  3. Defacto standard compatibility: If a behavior is widely accepted as the standard, we should follow that behavior. "Widely accepted" is generally subjective based on popular opinion and usage.

For a list of terminal developer features Wintty supports, see the reference (but note at the time of writing this is still a work-in-progress).

Footnotes

  1. If not, we want to know! Please open an issue.

  2. We may put some xterm behaviors behind a configuration flag if the behavior is questionable or not widely accepted.

  3. If a behavior differs between the specification and the terminal that defined the protocol, we open a discussion to determine the correct behavior.