跳到主要内容
ansicode

OSC 4 — 设置调色板颜色(与查询)

设置 256 色调色板中某一项颜色,或查询其当前值。

字节形式

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

\\x1b[\x1b]4;N;#RRGGBB\x07 (set) \x1b]4;N;?\x07 (query)
\\033[\033]4;N;...\007
\\e[\e]4;N;...\a
ESC [ESC ] 4 ; N ; COLOR BEL
hex1b 5d 34 3b <N> 3b ... 07

说明

设置终端工作调色板中第 `N` 项(0..255)的颜色。0..7 为基本色(黑 / 红 / 绿 / 黄 / 蓝 / 品红 / 青 / 白),8..15 为亮色版本,16..231 为 6×6×6 颜色立方,232..255 为 24 级灰度。颜色语法与 OSC 10/11 相同:`#RRGGBB`、`#RGB`、`rgb:RRRR/GGGG/BBBB`、X11 颜色名。将颜色改为 `?`(`\x1b]4;N;?\x07`)会让终端回报当前值 —— base16 主题、pywal、主题检测脚本都用这个查询/设置循环在启动时读取并改写调色板。使用 OSC 104(`\x1b]104;N\x07`)重置单个索引;不带参数的 OSC 104 重置整个调色板。

规范出处: xterm-ctlseqs (OSC 4)

示例

bash
printf '\033]4;1;#ff5555\007'   # remap colour 1 (red) to #ff5555\nprintf '\033]4;1;?\007'        # query current colour 1
python
import sys; sys.stdout.write('\x1b]4;1;#ff5555\x07')
go
fmt.Print("\x1b]4;1;#ff5555\x07")
javascript
process.stdout.write('\x1b]4;1;#ff5555\x07')
c
printf("\x1b]4;1;#ff5555\x07");

终端支持

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

相关序列

在家族食谱中

SGR 食谱 · 5. OSC 调色板覆盖 —— 直接把槽位本身改了