Skip to content

Enter alt screen (DECSET 1049)

Category: modes · Baseline: core · Tags: DEC Private Modes, Xterm Extensions · Specification ↗

ESC [ ? 1049 h
DECSET 1049 switches to the alternate screen buffer and saves the cursor position. The sequence is ESC [ ? 1049 h. The alternate screen is a separate buffer used by full-screen TUI applications (vim, less, htop, tmux) so they can render without disturbing the user's scrollback history. When the application exits and sends DECRST 1049, the terminal restores the original buffer contents and cursor position — the user's previous shell output reappears as if the TUI never ran. This is why closing vim brings back the terminal content that was there before. Mode 1049 combines three operations: save cursor (DECSC), switch to alt screen (?47), and clear the alt screen. Universally supported in modern terminals.
How this is testedautomated
Send \x1b[?1049h (DECSET 1049), verify altScreen mode is active.

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 11 of 12 terminals (92%). Not supported by: vt100.js. Part of the Core TUI baseline. Notes: vt100.js: Not in VT100/VT220xterm extension.

Supported by 13 of 14 backends (93%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yesDECRPM: mode reset
Ghostty1.3.1✓ yesDECRPM: mode reset
VS Code✓ yes
Warp✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

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

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
Kitty0.40.0✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes
vt100.js0.2.1✗ noNot in VT100/VT220 — xterm extension