Skip to content

Report icon label (CSI 20 t)

Category: device · Baseline: rich · Tags: Xterm Extensions · Specification ↗

ESC [ 20 t
XTWINOPS subcode 20 queries the current icon label (the short title shown when the window is minimized to the taskbar/dock). The query is CSI 20 t; the response is OSC L label ST. Applications that previously set the icon label via OSC 1 can use this to read it back. Icon label is conceptually distinct from window title (queried via CSI 21 t / set via OSC 2). Many modern terminals collapse the two into a single string, in which case CSI 20 t and CSI 21 t return the same value. Some terminals refuse to report titles for security reasons (a hostile process running in your terminal could otherwise exfiltrate any title set by another process).
How this is testedpartial
Send \x1b[20t, verify the terminal sends an OSC L response. Headless emulators that don't store icon labels return partial.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 3 of 9 terminals (33%). Part of the Rich TUI baseline.

Supported by 2 of 14 backends (14%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yesicon label: bun
Ghostty1.3.1✗ noNo XTWINOPS 20 response (terminal may refuse for security)
Terminal.app2.15✗ noNo XTWINOPS 20 response (terminal may refuse for security)
Kitty0.46.2✗ noWindow operations not exposed via Python batch bridge
VS Code1.113.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
WezTerm0.1.0-fork.5~ partialIcon label report requires a real window system
xterm.js5.5.0~ partialIcon label report not exposed in xterm.js headless mode
Alacritty0.26.0✗ noIcon label report not implemented by alacritty
vt100.js0.2.1✗ noXTWINOPS not implemented — post-dates VT220 baseline
vterm0.2.0✗ noXTWINOPS icon label report not implemented in vterm.js