跳到主要内容
ansicode

XTSMGRAPHICS — Sixel / ReGIS / 颜色寄存器容量查询 + 设置(CSI ? Pi ; Pa ; Pv S)

查询 / 设置终端的图形上限 —— sixel 颜色寄存器数、sixel 图形区域、ReGIS 图形区域。图像感知 TUI 决定位图大小的标准入口。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b[?<Pi>;<Pa>;<Pv>S
\\033[\033[?1;1S
\\e[\e[?1;1S
ESC [ESC [ ? Pi ; Pa ; Pv S
hex1b 5b 3f ... 53

说明

xterm 的图形能力原语。前缀 ? 把末字节 S 从 SU(向上滚动)切换为 XTSMGRAPHICS —— 注意与 SU 的解析二义性(\x1b[<Ps>S? 是向上滚动)。三个参数:Pi = 1 颜色寄存器、2 sixel 图形区域(像素行 × 列)、3 ReGIS 图形区域。Pa 操作 = 1 读取当前值、2 重置为默认、3 设为 Pv4 读取最大值。Pv 取值仅当 Pa=3(设置)时使用。回复格式 \x1b[?<Pi>;<Ps>;<Pv>SPs 是状态码(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 读最大。
PvPa=3 时的设置值。其他情况省略。

示例

bash
printf '\033[?1;4S'   # query max color registers — reply: \x1b[?1;0;<max>S
python
import sys\nsys.stdout.write('\x1b[?2;1S')   # current sixel pixel area\n# reply: \x1b[?2;0;<rows>;<cols>S
go
fmt.Print("\x1b[?1;3;1024S")   // try to RAISE color registers to 1024 (kitty allows)
javascript
process.stdout.write('\x1b[?3;1S')   // query current ReGIS area
c
printf("\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
支持

相关序列