Skip to content
🟣

Rich TUI Baseline

Advanced features for cutting-edge TUIs

Cutting-edge terminal capabilities that enable the richest user experiences: the Kitty keyboard protocol (unambiguous key reporting with modifiers and release events), Kitty graphics protocol and Sixel for inline images, OSC 8 hyperlinks (clickable links in terminal output), OSC 52 clipboard access, extended underline styles (curly, dotted, dashed) with independent underline colors, semantic prompt markers (OSC 133), and text reflow on terminal resize.

96 features in this baseline

Analysis2026-09-28

0 of 12 tested terminals achieve 100% Rich TUI compliance. Lagging: vt100.js (32%), xterm.js (49%), Alacritty (50%). Most commonly missing: iTerm2 Cell Size Reporting (OSC 1337), iTerm2 Capability Reporting (OSC 1337), OSC 5522 advanced clipboard.

Compliance Scorecard ​

Terminal Applications ​

iTerm2
82%79 / 96
Ghostty
75%72 / 96
Kitty
78%75 / 96
VS Code
73%70 / 96
Warp
72%69 / 96
Cursor
66%63 / 96
Terminal.app
70%67 / 96

Headless Backends ​

vterm.js
79%76 / 96
xterm.js
38%36 / 96
Alacritty
39%37 / 96
WezTerm
53%51 / 96
vt100.js
25%24 / 96

Guidance ​

For Developers

Rich features enable experiences that were previously impossible in terminals — clickable links, inline images, precise keyboard input. Use feature detection (via DA1 responses or DECRPM queries) and degrade gracefully when unavailable.

For Terminal Authors

Rich compliance differentiates your terminal. The Kitty keyboard protocol is the most impactful single feature — it solves decades of terminal input ambiguity. Ghostty, Kitty, WezTerm, and foot lead here.

Features ​

Terminal Applications ​

FeatureiTerm2GhosttyKittyVS CodeWarpCursorTerminal.app
Underline color, indexed (SGR 58;5)✓✓✓✓✓✓✓
Underline color, truecolor (SGR 58;2)✓✓✓✓✓✓✓
Reset underline color (SGR 59)✓✓✓✓✓✓✓
Reverse Wrap (Mode 45)✓✓✓✓✓✓✓
Selective Erase (DECSED)✓✓✓✓✓✓✓
SL — shift left (CSI Ps SP @)✓✓✓✓✓✓✓
SR — shift right (CSI Ps SP A)✓✓✓✓✓✓✓
DECIC — insert columns (CSI Ps ' })✓✓✓✓✓✓✓
DECDC — delete columns (CSI Ps ' ~)✓✓✓✓✓✓✓
Pixel Mouse Reporting (1016)✓✓✓✓✓✓✓
urxvt Mouse Reporting (1015)✓✓✓✓✓✓✓
Left/Right Margins (DECLRMM, Mode 69)✓✓✓✓✓✓✓
UTF-8 mouse mode (?1005)✓✓✓✓✓✓✓
Kitty keyboard protocol✓✓✓✓✓✗✗
Kitty graphics protocol✓✓✓✗✓✗✓
Sixel graphics✗✗✗✗✗✗✓
Hyperlinks (OSC 8)✓✓✓✓✓✓✓
Text reflow on resize✓✓✓✓✓✓✓
Semantic prompts (OSC 133)✓✓✓✓✓✓✓
VS Code Shell Integration (OSC 633)✓✓✓✓✓✓✓
OSC 133;A prompt start (FTCS_PROMPT)✓✓✓✓✓✓✓
OSC 133;B command start (FTCS_COMMAND_START)✓✓✓✓✓✓✓
OSC 133;C command executed (FTCS_COMMAND_EXECUTED)✓✓✓✓✓✓✓
OSC 133;D command finished (FTCS_COMMAND_FINISHED)✓✓✓✓✓✓✓
OSC 133;P properties✓✓✓✓✓✓✓
OSC 633;A prompt start✓✓✓✓✓✓✓
OSC 633;B prompt end✓✓✓✓✓✓✓
OSC 633;C pre-execution✓✓✓✓✓✓✓
OSC 633;D command finished✓✓✓✓✓✓✓
OSC 633;E set commandline✓✓✓✓✓✓✓
OSC 633;P properties✓✓✓✓✓✓✓
Desktop Notifications (OSC 9/777)✓✓✓✓✓✓✓
iTerm2 Inline Images (OSC 1337)✓✓✓✓✓✓✓
Tertiary Device Attributes (DA3)✓✗✗✗✗✗✗
Request Setting (DECRQSS)✓✓✓✓✗✓✗
Query Terminfo (XTGETTCAP)✓✓✓✗✗✗✗
Terminal Version (XTVERSION)✓✓✓✓✓✗✗
Feature Reporting (TERM_FEATURES)✓✗✗✗✗✗✗
Report window size in pixels (CSI 14 t)✓✓✓✓✓✓✓
Report cell size in pixels (CSI 16 t)✗✓✓✓✗✓✗
Report icon label (CSI 20 t)✓✗✗✗✗✗✗
Report window title (CSI 21 t)✓✗✗✗✗✗✗
Push title/icon stack (CSI 22 ; 0 t)✓✓✓✓✓✓✓
Pop title/icon stack (CSI 23 ; 0 t)✓✓✓✓✓✓✓
XTREPORTCOLORS — report color capabilities (CSI # R)✗✗✓✗✗✗✗
XTGETXRES — query resource value (DCS + Q)✗✗✗✗✗✗✗
LC_TERMINAL env variable???????
KITTY_* env variables???????
WEZTERM_* env variables???????
WT_SESSION env variable???????
iTerm2 Cell Size Reporting (OSC 1337)✗✗✗✗✗✗✗
iTerm2 Capability Reporting (OSC 1337)✗✗✗✗✗✗✗
Sixel support in DA1✓✗✗✗✗✗✗
Sixel geometry report (CSI ? Pi;Pa;Pv S)✗✗✗✗✗✗✗
OSC 9;4 progress bar✓✓✓✓✓✓✓
OSC 66 text sizing✓✓✓✓✓✓✓
OSC 5522 advanced clipboard✗✗✗✗✗✗✗
XTPUSHSGR — push SGR stack (CSI # {)✓✓✓✓✓✓✓
XTPOPSGR — pop SGR stack (CSI # })✓✓✓✓✓✓✓
XTSAVE — save DEC private modes (CSI ? Pm s)✓✓✓✓✓✓✓
XTRESTORE — restore DEC private modes (CSI ? Pm r)✓✓✓✓✓✓✓
Push color palette (CSI # P)✓✓✓✓✓✓✓
Pop color palette (CSI # Q)✓✓✓✓✓✓✓
modifyOtherKeys mode 3✓✓✓✓✓✓✓
Kitty keyboard: DISAMBIGUATE (flag 1)✓✓✓✓✓✗✗
Kitty keyboard: REPORT_EVENTS (flag 2)✓✓✓✓✓✗✗
Kitty keyboard: REPORT_ALTERNATE (flag 4)✓✓✓✓✓✗✗
Kitty keyboard: REPORT_ALL_KEYS (flag 8)✓✓✓✓✓✗✗
Kitty keyboard: REPORT_TEXT (flag 16)✓✓✓✓✓✗✗
Kitty graphics: transmit✓✓✓✓✓✓✓
Kitty graphics: display✓✓✓✗✓✗✓
Kitty graphics: animation✓✓✓✓✓✓✓
Kitty graphics: Unicode placeholders✗✗✗✗✗✗✓
OSC 52 clipboard read✓✗✗✓✗✓✗
Special color (OSC 5)✗✗✗✗✗✗✓
Reset highlight background (OSC 117)✓✓✓✓✓✓✓
Reset highlight foreground (OSC 119)✓✓✓✓✓✓✓
Highlight background (OSC 17)✓✗✓✗✗✗✓
Highlight foreground (OSC 19)✓✗✓✗✗✗✓
Pointer shape (OSC 22)✓✓✓✓✓✓✓
Desktop notifications (OSC 99)✓✓✓✓✓✓✓
Notifications (OSC 777)✓✓✓✓✓✓✓
VTE termprop (OSC 666)✓✓✓✓✓✓✓
Systemd context (OSC 3008)✓✓✓✓✓✓✓
Reset pointer fg color (OSC 113)✓✓✓✓✓✓✓
Reset pointer bg color (OSC 114)✓✓✓✓✓✓✓
Kitty color protocol (OSC 21)✓✓✓✓✓✓✓
Kitty color stack push (OSC 30001)✓✓✓✓✓✓✓
Kitty color stack pop (OSC 30101)✓✓✓✓✓✓✓
Set Wayland app-id (OSC 176)✓✓✓✓✓✓✓
Screen flash (OSC 555)✓✓✓✓✓✓✓
Font size query/set (OSC 7770)✓✓✓✓✓✓✓
Font + window size (OSC 7777)✓✓✓✓✓✓✓
Font ligatures???????
Kitty click events???????
DSR ?996 — color scheme query???????

Headless Backends ​

Parser correctness tested via Termless. A ✓ means the parser accepts the sequence, not that it renders correctly.

Featurevterm.jsxterm.jsAlacrittyWezTermvt100.js
Underline color, indexed (SGR 58;5)✓✓~~✗
Underline color, truecolor (SGR 58;2)✓✓~~✗
Reset underline color (SGR 59)✓✓✓✓✗
Reverse Wrap (Mode 45)✓✓✗✓✓
Selective Erase (DECSED)✓✓✗✗✗
SL — shift left (CSI Ps SP @)✗✗✗✗✗
SR — shift right (CSI Ps SP A)✗✗✗✗✗
DECIC — insert columns (CSI Ps ' })✗✗✗✗✗
DECDC — delete columns (CSI Ps ' ~)✗✗✗✗✗
Pixel Mouse Reporting (1016)✓✗~~✗
urxvt Mouse Reporting (1015)✓✗✗✗✗
Left/Right Margins (DECLRMM, Mode 69)✓✗~~✗
UTF-8 mouse mode (?1005)✗✗✓✓✓
Kitty keyboard protocol✓✗✓✓✗
Kitty graphics protocol✓✗✗✗✗
Sixel graphics✓✗✗✓✗
Hyperlinks (OSC 8)✓✓✓✓✗
Text reflow on resize✓✓✓✓✗
Semantic prompts (OSC 133)✓✗✗✓✗
VS Code Shell Integration (OSC 633)✓✗✗✓✗
OSC 133;A prompt start (FTCS_PROMPT)✓✓✓✓✓
OSC 133;B command start (FTCS_COMMAND_START)✓✓✓✓✓
OSC 133;C command executed (FTCS_COMMAND_EXECUTED)✓✓✓✓✓
OSC 133;D command finished (FTCS_COMMAND_FINISHED)✓✓✓✓✓
OSC 133;P properties✓✓✓✓✓
OSC 633;A prompt start✓✓✓✓✓
OSC 633;B prompt end✓✓✓✓✓
OSC 633;C pre-execution✓✓✓✓✓
OSC 633;D command finished✓✓✓✓✓
OSC 633;E set commandline✓✓✓✓✓
OSC 633;P properties✓✓✓✓✓
Desktop Notifications (OSC 9/777)✓✗~~✗
iTerm2 Inline Images (OSC 1337)✓✗✗✗✗
Tertiary Device Attributes (DA3)✓✗~~✗
Request Setting (DECRQSS)✓✓~~✗
Query Terminfo (XTGETTCAP)✓✗~~✗
Terminal Version (XTVERSION)✓✗~~✗
Feature Reporting (TERM_FEATURES)?????
Report window size in pixels (CSI 14 t)✓~~~✗
Report cell size in pixels (CSI 16 t)✓~~~✗
Report icon label (CSI 20 t)✓~✗~✗
Report window title (CSI 21 t)✓~✗~✗
Push title/icon stack (CSI 22 ; 0 t)✓✓✓~✓
Pop title/icon stack (CSI 23 ; 0 t)✓✓✗~✓
XTREPORTCOLORS — report color capabilities (CSI # R)✓✓✗✗✗
XTGETXRES — query resource value (DCS + Q)✓✓✗✗✗
LC_TERMINAL env variable?????
KITTY_* env variables?????
WEZTERM_* env variables?????
WT_SESSION env variable?????
iTerm2 Cell Size Reporting (OSC 1337)✓✗✗✗✗
iTerm2 Capability Reporting (OSC 1337)✓✗✗✗✗
Sixel support in DA1✓✗✗~✗
Sixel geometry report (CSI ? Pi;Pa;Pv S)✓✓✗✗✓
OSC 9;4 progress bar?????
OSC 66 text sizing✓✗✗✗✗
OSC 5522 advanced clipboard✓✗✗✗✗
XTPUSHSGR — push SGR stack (CSI # {)✓✓✗~✓
XTPOPSGR — pop SGR stack (CSI # })✓✓✗~✓
XTSAVE — save DEC private modes (CSI ? Pm s)✓✓✗~✓
XTRESTORE — restore DEC private modes (CSI ? Pm r)✓✓✗~✓
Push color palette (CSI # P)✓✓✗~✓
Pop color palette (CSI # Q)✓✓✗~✓
modifyOtherKeys mode 3✓✗~~✗
Kitty keyboard: DISAMBIGUATE (flag 1)✓✗✓✓✗
Kitty keyboard: REPORT_EVENTS (flag 2)✓✗✓✓✗
Kitty keyboard: REPORT_ALTERNATE (flag 4)✓✗✓✓✗
Kitty keyboard: REPORT_ALL_KEYS (flag 8)✓✗✓✓✗
Kitty keyboard: REPORT_TEXT (flag 16)✓✗✓✓✗
Kitty graphics: transmit✓✗✗✗✗
Kitty graphics: display✓✗✗✗✗
Kitty graphics: animation✓✗✗✗✗
Kitty graphics: Unicode placeholders✓✗✗✗✗
OSC 52 clipboard read✓✗~~✗
Special color (OSC 5)✓✗✗✗✗
Reset highlight background (OSC 117)✓✓✓✓✓
Reset highlight foreground (OSC 119)✓✓✓✓✓
Highlight background (OSC 17)✓✗✗✗✗
Highlight foreground (OSC 19)✓✗✗✗✗
Pointer shape (OSC 22)?????
Desktop notifications (OSC 99)?????
Notifications (OSC 777)?????
VTE termprop (OSC 666)?????
Systemd context (OSC 3008)?????
Reset pointer fg color (OSC 113)✓????
Reset pointer bg color (OSC 114)✓????
Kitty color protocol (OSC 21)✓✗✗✗✗
Kitty color stack push (OSC 30001)✓????
Kitty color stack pop (OSC 30101)✓????
Set Wayland app-id (OSC 176)?????
Screen flash (OSC 555)?????
Font size query/set (OSC 7770)✓????
Font + window size (OSC 7777)✓????
Font ligatures?????
Kitty click events?????
DSR ?996 — color scheme query✓????