跳到主要内容
ansicode

DCS Sixel — 内联栅格图像(ESC P q … ESC \)

通过 Sixel 设备控制载荷在终端流中嵌入像素图像。

字节形式

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

\\x1b[\x1bPq <sixel data> \x1b\\
\\033[\033Pq … \033\\
\\e[\eP q … \e\\
ESC [ESC P q DATA ESC \
hex1b 50 71 ... 1b 5c

说明

Sixel 是 DEC 时代的内联像素图形格式(DEC VT240/VT340),近年被现代终端复活。帧以设备控制字符串引导符 `\x1bP`(DCS)开头,可选参数段后接末字节 `q` 选择 Sixel 模式,再是 `?`..`~` 的可打印字节载荷 —— 每个字节编码一个 6 像素高的竖向切片(故名 sixel)。帧以字符串终止符结尾 —— 标准形式 `\x1b\\`(ST),也广泛接受 `\x07`(BEL)。`libsixel`、`chafa`、`viu`、`timg`、`ranger` 风格的图像预览、`kitten icat --transfer-mode=stream`(Kitty 原生协议的 Sixel 回退)以及 `mpv --vo=sixel` 都使用此序列。终端支持差别明显:xterm 需 `+sb` 编译并以 `-ti vt340` 启动;mintty、foot、wezterm、iTerm2、Windows Terminal Canary、ghostty 默认可用;kitty、alacritty、macOS Terminal 不支持(Kitty 有自家更优协议)。

规范出处: DEC VT340 Programmer Reference / xterm-ctlseqs (DCS Ps; Ps; Ps q)

示例

bash
# A 12x6 magenta block via the Sixel raw payload\nprintf '\033Pq#0;2;100;0;100#0~~\033\\'
python
import sys; sys.stdout.write('\x1bPq#0;2;100;0;100#0~~\x1b\\')
go
fmt.Print("\x1bPq#0;2;100;0;100#0~~\x1b\\")
javascript
process.stdout.write('\x1bPq#0;2;100;0;100#0~~\x1b\\')
c
printf("\x1bPq#0;2;100;0;100#0~~\x1b\\");

终端支持

xterm
部分
Linux console (fbcon)
不支持
macOS Terminal.app
不支持
iTerm2
支持
Windows Terminal
部分
cmd.exe / ConPTY
不支持
kitty
不支持
alacritty
不支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
部分
Konsole
支持
tmux
不支持
GNU screen
不支持

相关序列

在家族食谱中

DCS 食谱 · 2. 流内画图 —— Sixel 与 Kitty 图形