Appearance
Report cell size in pixels (CSI 16 t)
ESC [ 16 tXTWINOPS subcode 16 queries the dimensions of a single character cell in pixels. The query is
CSI 16 t; the response is CSI 6 ; height ; width t. This is the canonical xterm-style equivalent of OSC 1337 ; ReportCellSize and is essential for any protocol that needs to render images at a precise cell-aligned size.
Unlike OSC 1337 (an iTerm2 extension), CSI 16 t is part of the broader XTWINOPS spec and is supported by xterm, Ghostty, Kitty, WezTerm, foot, Contour, and many others. Applications should prefer this query when targeting modern terminals that follow xterm conventions.How this is testedautomated
Send
Send
\x1b[16t, verify response matches CSI 6 ; H ; W t.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 4 of 9 terminals (44%). Not supported by: Kitty, iTerm2, Terminal.app, vterm.js, vt100.js. Part of the Rich TUI baseline. Notes: Kitty: Window operations not exposed via Python batch bridge; vterm.js: XTWINOPS cell pixel-size report not implemented in vterm.js; vt100.js: XTWINOPS not implemented — post-dates VT220 baseline.
Supported by 2 of 14 backends (14%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| Ghostty | 1.3.1 | ✓ yes | 26x14 px/cell |
| iTerm2 | 3.6.9 | ✗ no | No XTWINOPS 16 response |
| Terminal.app | 2.15 | ✗ no | No XTWINOPS 16 response |
| 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 |
|---|---|---|---|
| Alacritty | 0.26.0 | ~ partial | Cell pixel-size report requires a real window system |
| WezTerm | 0.1.0-fork.5 | ~ partial | Cell pixel-size report requires a real window system |
| xterm.js | 5.5.0 | ~ partial | Window operations require real window system; not exposed in headless mode |
| vt100.js | 0.2.1 | ✗ no | XTWINOPS not implemented — post-dates VT220 baseline |
| vterm | 0.2.0 | ✗ no | XTWINOPS cell pixel-size report not implemented in vterm.js |