Appearance
Report icon label (CSI 20 t)
Category: device · Baseline: rich · Tags: Xterm Extensions · Specification ↗
ESC [ 20 tXTWINOPS 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
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
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | icon label: bun |
| Ghostty | 1.3.1 | ✗ no | No XTWINOPS 20 response (terminal may refuse for security) |
| Terminal.app | 2.15 | ✗ no | No XTWINOPS 20 response (terminal may refuse for security) |
| Kitty | 0.46.2 | ✗ no | Window operations not exposed via Python batch bridge |
| VS Code | 1.113.0 | ? unknown | |
| Warp | 0.2026.03.18.08.24.03 | ? unknown | |
| Cursor | 2.6.21 | ? unknown |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| WezTerm | 0.1.0-fork.5 | ~ partial | Icon label report requires a real window system |
| xterm.js | 5.5.0 | ~ partial | Icon label report not exposed in xterm.js headless mode |
| Alacritty | 0.26.0 | ✗ no | Icon label report not implemented by alacritty |
| vt100.js | 0.2.1 | ✗ no | XTWINOPS not implemented — post-dates VT220 baseline |
| vterm | 0.2.0 | ✗ no | XTWINOPS icon label report not implemented in vterm.js |