OSC 4 — 设置调色板颜色(与查询)
设置 256 色调色板中某一项颜色,或查询其当前值。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b]4;N;#RRGGBB\x07 (set) \x1b]4;N;?\x07 (query)\\033[
\033]4;N;...\007\\e[
\e]4;N;...\aESC [
ESC ] 4 ; N ; COLOR BELhex
1b 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)
示例
printf '\033]4;1;#ff5555\007' # remap colour 1 (red) to #ff5555\nprintf '\033]4;1;?\007' # query current colour 1import sys; sys.stdout.write('\x1b]4;1;#ff5555\x07')fmt.Print("\x1b]4;1;#ff5555\x07")process.stdout.write('\x1b]4;1;#ff5555\x07')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
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 部分 | 部分 | 支持 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |