Skip to content

Terminal Compatibility Matrix

Terminal capabilities last verified: 2026-03.

Comprehensive reference of terminal emulator feature support as detected by Silvery.

Capability Matrix

TerminalColorsKitty KBKitty GfxSixelOSC 52HyperlinksNotifyPasteMouseSyncUnicode
Ghostty24-bitYesYes-YesYes-YesYesYesYes
kitty24-bitYesYes-YesYesYesYesYesYesYes
WezTerm24-bitYes-YesYesYes-YesYesYesYes
iTerm224-bit---YesYesYesYesYesYesYes
foot24-bitYes-YesYesYes-YesYesYesYes
Alacritty24-bit---YesYes-YesYesYesYes
VS Code24-bit------YesYes-Yes
Terminal.app256------YesYes-Yes
tmux24-bit*------YesYes-Yes
TERM=dumb-------YesYes-Yes

* tmux color support depends on the outer terminal and tmux configuration.

Column Descriptions

ColumnProtocol/StandardDescription
ColorsSGRColor depth: 24-bit (truecolor), 256, 16 (basic), or none
Kitty KBCSI > uKitty keyboard protocol for unambiguous key identification
Kitty GfxAPC GKitty graphics protocol for inline image display
SixelDCS qSixel graphics for inline image display
OSC 52OSC 52Clipboard access (works over SSH)
HyperlinksOSC 8Clickable hyperlinks in terminal output
NotifyOSC 9/99Desktop notifications (OSC 9 = iTerm2, OSC 99 = Kitty)
PasteDEC 2004Bracketed paste mode (distinguish pasted from typed input)
MouseSGR 1006SGR mouse tracking (click, drag, scroll)
SyncDEC 2026Synchronized output (batch rendering to prevent tearing)
Unicode-Unicode and emoji rendering

Terminal Details

Ghostty

  • Env: TERM_PROGRAM=ghostty, COLORTERM=truecolor
  • Keyboard: Full Kitty keyboard protocol (Cmd, Hyper, event types)
  • Images: Kitty graphics protocol
  • Clipboard: OSC 52 (works over SSH)
  • Notes: Modern GPU-accelerated terminal. No OSC 9/99 notifications.

kitty

  • Env: TERM=xterm-kitty, COLORTERM=truecolor
  • Keyboard: Full Kitty keyboard protocol (originator of the spec)
  • Images: Kitty graphics protocol (originator of the spec)
  • Clipboard: OSC 52
  • Notifications: OSC 99
  • Notes: Feature-rich terminal, defines many protocols used by others.

WezTerm

  • Env: TERM_PROGRAM=WezTerm, COLORTERM=truecolor
  • Keyboard: Kitty keyboard protocol
  • Images: Sixel graphics
  • Clipboard: OSC 52
  • Notes: Cross-platform (macOS, Linux, Windows). Also supports iTerm2 image protocol.

iTerm2

  • Env: TERM_PROGRAM=iTerm.app, COLORTERM=truecolor
  • Keyboard: Legacy xterm sequences only (no Kitty protocol)
  • Images: Proprietary iTerm2 inline image protocol (not Kitty or Sixel)
  • Clipboard: OSC 52
  • Notifications: OSC 9
  • Notes: macOS only. Most popular macOS terminal after Terminal.app.
  • Env: TERM=foot or TERM=foot-extra, COLORTERM=truecolor
  • Keyboard: Kitty keyboard protocol
  • Images: Sixel graphics
  • Clipboard: OSC 52
  • Notes: Wayland-native, minimalist, fast. Linux only.

Alacritty

  • Env: TERM_PROGRAM=Alacritty, COLORTERM=truecolor
  • Keyboard: Legacy xterm sequences only
  • Images: None (no image protocol support)
  • Clipboard: OSC 52
  • Notes: GPU-accelerated, cross-platform. Focused on performance over features. Sync output since 0.14.

VS Code Integrated Terminal

  • Env: TERM_PROGRAM=vscode, COLORTERM=truecolor
  • Notes: Embedded terminal in VS Code. Basic capabilities. xterm.js-based.

Terminal.app (macOS)

  • Env: TERM_PROGRAM=Apple_Terminal, TERM=xterm-256color
  • Colors: 256 only (no truecolor)
  • Notes: macOS built-in. Most limited of common terminals. No OSC 52, no hyperlinks.

tmux

  • Env: TERM=tmux-256color, also TMUX env var set
  • Colors: Passes through outer terminal's color support (configure with set -as terminal-features ",*:RGB")
  • Keyboard: Does not pass through Kitty keyboard protocol
  • Notes: Terminal multiplexer. Capabilities largely depend on the outer terminal and configuration. Use set -sg escape-time 0 for responsive input.

CI / Headless (TERM=dumb)

  • Env: TERM=dumb or no TERM set
  • Notes: No advanced capabilities. Use renderString() with plain: true for clean output.

Detection Method

Silvery detects capabilities synchronously from environment variables at startup:

VariablePurpose
TERMTerminal type (e.g., xterm-256color, xterm-kitty)
TERM_PROGRAMTerminal emulator name (e.g., ghostty, iTerm.app)
COLORTERMColor capability hint (truecolor or 24bit)
NO_COLORDisable all color output when set
typescript
import { detectTerminalCaps } from "@silvery/term"

const caps = detectTerminalCaps()
// caps.colorLevel, caps.kittyKeyboard, caps.osc52, etc.

No I/O is performed -- detection is instant but limited to what env vars reveal. For runtime detection of specific protocols (like Kitty keyboard support), use:

typescript
import { detectKittyFromStdio } from "@silvery/term"

const result = await detectKittyFromStdio(process.stdout, process.stdin, 200)
// result.supported: boolean, result.flags: number

Generating the Matrix

The compatibility matrix can also be auto-generated from the detection code:

bash
bun vendor/silvery/tests/terminal-compat/compat-matrix.ts

This runs detectTerminalCaps() with mocked env vars for each terminal profile and outputs a markdown table.

References

Released under the MIT License.