Skip to content

Push title/icon stack (CSI 22 ; 0 t)

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

ESC [ 22 ; 0 t
XTWINOPS 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 testedpartial
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 8 of 9 terminals (89%). Not supported by: Alacritty. Part of the Rich TUI baseline. Notes: Alacritty: Title stack not implemented by alacritty.

Supported by 9 of 14 backends (64%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yesSequence consumed; terminal responsive
Ghostty1.3.1✓ yesSequence consumed; terminal responsive
Terminal.app2.15✓ yesSequence consumed; terminal responsive
Kitty0.46.2✓ yesTitle stack 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
vt100.js0.2.1✓ yes
vterm0.2.0✓ yes
xterm.js5.5.0✓ yes
WezTerm0.1.0-fork.5~ partialTitle stack push not exposed in headless mode
Alacritty0.26.0✗ noTitle stack not implemented by alacritty