DECRQSS — 请求选区或设置(DCS $ q ... ST)
请求终端报告任一 SGR / 模式 / 边距 / 光标形状当前值 —— DCS 通用查询。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1bP$q<P>\x1b\\\\033[
\033P$q<P>\033\\\\e[
\eP$q<P>\e\\ESC [
ESC P $ q <P> ESC \hex
1b 50 24 71 ... 1b 5c说明
Request Selection or Setting。中间字节 `$`(0x24)、末字节 `q`(0x71)的 DCS 帧;体 `<P>` 指明要查询的设置。常见探测:`\x1bP$qm\x1b\\` 查询当前 SGR 属性(终端以 `\x1bP1$rm\x1b\\` 回报当前颜色/样式栈);`\x1bP$q r\x1b\\`(字面 `$ q SP r`)查询 DECSTBM 滚动区域上下边距;`\x1bP$q" p\x1b\\` 查询 DECSCL 一致性级别;`\x1bP$q" q\x1b\\` 查询 DECSCA 字符保护;`\x1bP$q q\x1b\\`(`SP q`)查询当前 DECSCUSR 光标形状。回复同样是 DCS 帧 —— 首字节 `1`(有效且支持)或 `0`(请求无效),随后 `$r`、所请求的设置字节、ST。现代程序在启动探测时使用 DECRQSS,以便退出时恢复终端的原有状态 —— `vim` 的 `t_RV` 自动检测、`bat` 的语法主题选择、`kitty kitten themes` 都依赖它。
规范出处: xterm-ctlseqs (DECRQSS, DCS $ q Pt ST)
示例
# Ask for the current SGR attributes; reply lands on stdin in raw mode.\nstty -echo raw min 0 time 5\nprintf '\033P$qm\033\\'; IFS= read -r -t 1 -d '\\' REPLY; stty sane\necho "DECRQSS m reply: $REPLY"import sys; sys.stdout.write('\x1bP$qm\x1b\\\\') # reply arrives on stdinfmt.Print("\x1bP$qm\x1b\\\\") // request current SGRprocess.stdout.write('\x1bP$qm\x1b\\\\') // request current SGR; read process.stdinprintf("\x1bP$qm\x1b\\\\"); fflush(stdout); /* read DCS reply from stdin */终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 不支持 | 部分 | 部分 | 不支持 | 支持 | 不支持 | 支持 | 支持 | 部分 | 部分 | 不支持 | 不支持 |
相关序列
在家族食谱中
DCS 食谱 · 3. 向终端提问 —— DECRQSS、terminfo cap、DECRQTSR、DECRQUPSS、光标样式