Appearance
Push title/icon stack (CSI 22 ; 0 t)
ESC [ 22 ; 0 tXTWINOPS subcode 22 pushes the current window title and icon label onto an internal stack. The sequence is
CSI 22 ; 0 t (push both), CSI 22 ; 1 t (push icon only), or CSI 22 ; 2 t (push title only). XTWINOPS 23 pops the matching stack.
The title stack solves a longstanding ergonomics problem: applications that change the terminal title (vim, ssh, tmux) want to restore it on exit, but the only way to do that previously was to query the current title with CSI 21 t — which many terminals refuse for security reasons. Push/pop avoids exposing the title to the application: the terminal saves it internally and the application can restore it without ever seeing the value. Adopted by xterm, Ghostty, Kitty, WezTerm, foot, and others.How this is testedautomated
Send
Send
\x1b[22;0t, verify the sequence is consumed without crashing. Headless emulators verify the stack push happened internally where possible.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 12 of 14 backends (86%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | Sequence consumed; terminal responsive |
| Ghostty | 1.3.1 | ✓ yes | Sequence consumed; terminal responsive |
| VS Code | ✓ yes | ||
| Warp | ✓ yes | ||
| Cursor | ✓ yes | ||
| Terminal.app | ✓ yes |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| Alacritty | 0.26.0 | ✓ yes | Title stack not implemented by alacritty |
| vt100.js | 0.2.1 | ✓ yes | |
| vterm | 0.2.0 | ✓ yes | |
| xterm.js | 5.5.0 | ✓ yes | |
| Kitty | 0.40.0 | ~ partial | Title stack not exposed via Python batch bridge |
| WezTerm | 0.1.0-fork.5 | ~ partial | Title stack push not exposed in headless mode |