XTVERSION — 上报终端名称与版本(CSI > Pp q)
向终端询问可读的名称 + 版本字符串 —— 替代 DECDA 用于功能检测的现代方案,已被 Helix、Zellij、Neovim 等采用。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[>0q (query) reply: \x1bP>|<name> <version>\x1b\\\\033[
\033[>0q\\e[
\e[>0qESC [
ESC [ > Pp q → DCS > | <text> SThex
1b 5b 3e ... 71说明
以 xterm 扩展形式发送 Tertiary Device Attribute(TDA)查询。`>` 前缀把末字节 `q` 从 DECSCA(字符保护)切换为 XTVERSION;`Pp` 保留(恒发 `0`),仅供前向兼容。终端以 DCS 包裹的字符串回复,标识自身:`DCS > | <名称> <空格> <版本> ST` —— 例如 `\x1bP>|XTerm(370)\x1b\\`、`\x1bP>|kitty 0.32.2\x1b\\`、`\x1bP>|WezTerm 20240203\x1b\\`、`\x1bP>|ghostty 1.0.0\x1b\\`。终止符是 ST(`\x1b\\`),偶有遗留实现用 BEL(`\x07`)。此序列实际上已取代 DECDA(`\x1b[c`)作为功能检测手段 —— DECDA 的终端 ID 编号(61 / 62 / 63 = VT100 / 220 / 320)早在 1990 年代就耗尽,与现代特性已脱钩。所有依据 `kitty` / `WezTerm` / `iTerm2` 分支启用 kitty graphics、OSC 1337 或 sixel 的 TUI 都把 XTVERSION 作为承重查询。往返很快(Unix 终端同步;ConPTY 上轮询非阻塞也可)。若约 200 ms 内未收到回复,可视为原始终端不支持 XTVERSION。
规范出处: xterm-ctlseqs (Tertiary DA / XTVERSION)
参数
| Pp | 保留。恒发 `0`。任意值的存在把 XTVERSION 与同样合法的 CSI > q(无参)区分开。 |
示例
# Print whichever terminal name comes back, then disambiguate:\nprintf '\033[>0q'\nread -rd '\\' reply\necho "$reply" # e.g. \x1bP>|kitty 0.32.2import sys, termios, tty, select\nsys.stdout.write('\x1b[>0q'); sys.stdout.flush()\n# Read DCS-framed reply: starts with \x1bP and ends with \x1b\\fmt.Print("\x1b[>0q")\n// scan stdin for DCS > | ... ST framing\n// branch: strings.HasPrefix(name, "kitty") → enable kitty graphicsprocess.stdout.write('\x1b[>0q')\n// process.stdin gets back a DCS-framed text like \x1bP>|WezTerm 20240203\x1b\\fputs("\x1b[>0q", stdout); fflush(stdout);\n/* read DCS payload, switch on substring 'kitty' / 'xterm' / 'WezTerm' */终端支持
- xterm
- 支持
- Linux console (fbcon)
- 不支持
- macOS Terminal.app
- 不支持
- iTerm2
- 支持
- Windows Terminal
- 支持
- cmd.exe / ConPTY
- 不支持
- kitty
- 支持
- alacritty
- 不支持
- WezTerm
- 支持
- Ghostty
- 支持
- GNOME Terminal
- 部分
- Konsole
- 支持
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 | 支持 | 不支持 | 支持 | 支持 | 部分 | 支持 | 不支持 | 不支持 |