XTSMGRAPHICS — Sixel / ReGIS / 颜色寄存器容量查询 + 设置(CSI ? Pi ; Pa ; Pv S)
查询 / 设置终端的图形上限 —— sixel 颜色寄存器数、sixel 图形区域、ReGIS 图形区域。图像感知 TUI 决定位图大小的标准入口。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[?<Pi>;<Pa>;<Pv>S\033[?1;1S\e[?1;1SESC [ ? Pi ; Pa ; Pv S1b 5b 3f ... 53说明
xterm 的图形能力原语。前缀 `?` 把末字节 `S` 从 SU(向上滚动)切换为 XTSMGRAPHICS —— 注意与 SU 的解析二义性(`\x1b[<Ps>S` 无 `?` 是向上滚动)。三个参数:**`Pi` 项** = `1` 颜色寄存器、`2` sixel 图形区域(像素行 × 列)、`3` ReGIS 图形区域。**`Pa` 操作** = `1` 读取当前值、`2` 重置为默认、`3` 设为 `Pv`、`4` 读取最大值。**`Pv` 取值**仅当 `Pa=3`(设置)时使用。回复格式 `\x1b[?<Pi>;<Ps>;<Pv>S`,`Ps` 是状态码(`0` 成功、`1` 错误 / 无图形、`2` 重置错误、`3` 设置错误、`4` 超界)。对发 sixel 的 TUI(如 neovim 的 image.nvim、w3m-img、timg、chafa)至关重要:绘图前先查询 `\x1b[?1;4S`(最大颜色寄存器数)与 `\x1b[?2;1S`(当前 sixel 区域),据此调整抖动调色板与瓦片尺寸。xterm 默认值偏小(256 个颜色寄存器、1000×1000 像素 sixel 区域);kitty 暴露的值很大;alacritty / gnome-terminal / Windows Terminal 返回错误或无回应(不支持 sixel)。务必检查回复里的状态码 —— `Ps=1` 表示终端宣告「无图形支持」,应回退到半块字符或 ASCII 美术。
规范出处: xterm-ctlseqs (XTSMGRAPHICS)
参数
| Pi | 项选择:`1` 颜色寄存器、`2` sixel 区域、`3` ReGIS 区域。 |
| Pa | 操作:`1` 读取、`2` 重置、`3` 设置(用 Pv)、`4` 读最大。 |
| Pv | Pa=3 时的设置值。其他情况省略。 |
示例
printf '\033[?1;4S' # query max color registers — reply: \x1b[?1;0;<max>Simport sys\nsys.stdout.write('\x1b[?2;1S') # current sixel pixel area\n# reply: \x1b[?2;0;<rows>;<cols>Sfmt.Print("\x1b[?1;3;1024S") // try to RAISE color registers to 1024 (kitty allows)process.stdout.write('\x1b[?3;1S') // query current ReGIS areaprintf("\x1b[?2;4S"); /* before sixel encode: ask max canvas size, scale image to fit */终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 不支持 | 部分 | 不支持 | 不支持 | 支持 | 不支持 | 支持 | 部分 | 不支持 | 部分 | 不支持 | 不支持 |