Claude Code Colorizer:为 Claude Code 提供颜色可视化
Claude Code Colorizer
Claude Code Colorizer 是一款用 Go 编写、零依赖的 Claude Code 颜色可视化工具,可在提示词下方实时显示对话中提到的颜色色块,支持 #rgb、#rrggbb(aa)、rgb()/rgba()、hsl()/hsla() 和 oklch() 格式。
为 Claude Code 提供颜色可视化,灵感来自 nvim-colorizer。使用 Go 编写, 无任何依赖。
- 状态栏色块。 对话中提到的颜色(Claude 的
回复、它编写的代码、你的提示词)会以实时色块的形式显示在
提示符下方。它会读取
#rgb、#rrggbb(aa)、rgb()/rgba()、hsl()/hsla()和oklch()。 - 状态颜色。 随着会话在 工作中 → 需要你 → 完成 / 出错 之间切换,终端标签页和背景色调会随之变化。
show/try。 高亮任意文件中的颜色字面量 (claude-colorizer show styles.css),或将某种颜色预览为你的终端 背景(claude-colorizer try '#1e1e2e')。
终端支持
Ghostty 是测试最充分的终端:claude-colorizer 正是在它上面 开发的。其他驱动遵循各终端文档中记载的转义 序列,并配有单元测试,但实际使用较少。如果你使用其中 某一款,请参阅 CONTRIBUTING.md 了解简短的测试清单,以及 如何报告结果或添加终端。
| 终端 | 标签页颜色 | 背景色调 | 标题回退 |
|---|---|---|---|
| Kitty | ✅ 远程控制¹ | ✅ OSC 11 | — |
| Ghostty | —(不存在转义序列) | ✅ OSC 11 | ✅ 字形 |
| WezTerm | ✅ 用户变量 + Lua² | ✅ OSC 11 | — |
| iTerm2 | ✅ OSC 6 | ✅ OSC 1337 | — |
| Warp | — | — | ✅ 字形 |
| Alacritty | —(无标签页) | ✅ OSC 11 | ✅ 字形 |
| Windows Terminal | — | ✅ OSC 11 | ✅ 字形 |
| 其他类 xterm | — | ✅ OSC 11 | ✅ 字形 |
状态栏色块使用 24 位 SGR 颜色,在所有这些终端中均可正常工作。
每个终端都是一个驱动,实现 terminal.Terminal
(internal/terminal/drivers.go)。检测会读取环境变量
(internal/terminal/detect.go)。在 tmux 内部,它会改为询问 tmux 每个连接到会话的客户端 tty 正在运行哪个终端,
因为环境变量描述的是启动 tmux 服务器的那个终端。如果
连接了不同的终端,标签页颜色会发送给所有这些终端。要覆盖检测,请设置
CLAUDE_COLORIZER_TERMINAL=kitty|ghostty|wezterm|iterm2|warp|alacritty|windows-terminal|generic。
运行 claude-colorizer detect 查看检测结果。
¹ Kitty:将 allow_remote_control yes 添加到 kitty.conf(或 socket-only
加上 listen_on)。否则,kitty 会忽略标签页颜色,只有
背景会变化。
² WezTerm:颜色会以用户变量 claude_colorizer_tab 的形式发布。
要绘制标签页,请将以下内容添加到 wezterm.lua:
wezterm.on('format-tab-title', function(tab) local c = tab.active_pane.user_vars.claude_colorizer_tab if c and c ~= '' then return { { Background = { Color = c } }, { Foreground = { Color = '#000000' } }, { Text = ' ' .. tab.active_pane.title .. ' ' } } end end)
tmux:背景色调和标题无需任何设置即可工作;tmux 会将
它们应用到窗格。标签页颜色(kitty、iTerm2、WezTerm)必须传达到外层
终端,因此需要 set -g allow-passthrough on。当设置了 $TMUX 时,它们会被
自动包裹。
标题回退:Claude Code 会自行设置终端标题,可能会
覆盖字形。如果你的版本支持
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1,请设置它。如果你不想要该字形,
请设置 "title": false。
安装
你需要 Go 1.22+ 和 Claude Code。
git clone <this repo> && cd claude-colorizer make install
以上就是全部设置。make install 做两件事:
- 运行
go install,它会将二进制文件构建到$(go env GOPATH)/bin。 - 运行
claude-colorizer install,它会使用该二进制文件的 绝对路径 将状态栏和所有钩子添加到~/.claude/settings.json,因此 该目录是否在你的$PATH中并不重要。
重启 Claude Code,然后试试看:向 Claude 索要一个调色板,色块 就会出现在提示符下方。它工作时标签页或背景会发生变化。
Kitty 和 WezTerm 中的标签页颜色需要额外一项终端配置。请参阅 终端支持。
install 会更改什么
- 备份: 之前的文件会保存为
settings.json.bak。如果settings.json不是有效的 JSON(例如,它包含注释),安装 会拒绝改动它。 - 你现有的状态栏会被保留: 它会被串联起来,因此其输出会渲染在
色块上方的那一行。
uninstall会将其精确还原。 - 钩子: 它们会被追加到你已有的任何钩子旁边,绝不会
替换它们。再次运行
install不会添加重复项。 - 键顺序:
settings.json中的键会按字母顺序重写。
先用 claude-colorizer install --dry-run 预览更改。
| 标志 | 效果 |
|---|---|
--dry-run |
打印更改而不写入 |
--no-hooks |
仅状态栏(或在你安装了插件时使用此项) |
--no-statusline |
仅状态颜色 |
--settings PATH |
编辑另一个文件,例如项目中的 .claude/settings.json |
通过 make 传递标志,使用 make install ARGS="--no-statusline"。
卸载
make uninstall # or: claude-colorizer uninstall这只会移除它添加的条目,恢复链式状态栏,并删除二进制文件。
替代方案:作为 Claude Code 插件
该仓库同时也是一个插件市场。该插件只提供钩子,因为插件无法设置状态栏:
/plugin marketplace add /path/to/claude-colorizer
/plugin install claude-colorizer@claude-colorizer
然后运行 claude-colorizer install --no-hooks 来添加状态栏,而无需重复注册钩子。若想在不安装的情况下试用单个会话,请运行 claude --plugin-dir /path/to/claude-colorizer。
颜色含义
标签页、背景色调和标题字形显示会话正在做什么,因此你可以从另一个标签页或窗口判断 Claude 是否需要你。
| 颜色 | 字形 | 状态 | 含义 |
|---|---|---|---|
| 蓝色 | 🔵 | working | Claude 正在工作:思考、写入、运行工具。你暂时无需做任何事。 |
| 琥珀色 | 🟡 | attention | Claude 正在等待你:权限提示,或它已空闲等待输入。 |
| 绿色 | 🟢 | done | Claude 完成了它的回合。阅读回复并发送下一条提示。 |
| 红色 | 🔴 | error | 出错了:API 请求出错,或工具调用失败。 |
| 你的默认值 | none | reset | 会话刚刚开始或结束。 |
工具调用失败后的红色并不总是意味着回合结束。Claude 通常会恢复,颜色会在下一次成功的工具调用时变回蓝色。API 错误后的红色会一直保持,直到你发送另一条提示。
字形是为无法给标签页着色的终端提供的后备方案。它出现在窗口标题的开头。请参阅 终端支持 中的 Title fallback 列。
每个状态背后的钩子事件
| 钩子事件 | 状态 | 默认标签页 / 色调 |
|---|---|---|
UserPromptSubmit、PostToolUse |
working | #3b82f6 / #151b2b |
Notification(权限、空闲) |
attention | #f59e0b / #2a2112 |
Stop |
done | #22c55e / #13231a |
StopFailure、PostToolUseFailure |
error | #ef4444 / #2b1515 |
SessionStart、SessionEnd |
reset | 终端默认值 |
要更改任何颜色或字形,请参阅 配置。
配置
~/.config/claude-colorizer/config.json(或 $CLAUDE_COLORIZER_CONFIG)。每个键都是可选的,并叠加在默认值之上。运行 claude-colorizer config 以打印生效的配置。
{
"tab": true,
"background": true,
"title": true,
"states": {
"working": { "tab": "#7c3aed", "background": "#1a1426" },
"done": { "background": "#eef9f0" }
},
"statusline": {
"max": 12,
"sources": ["assistant", "tools", "user"],
"label": "hex",
"prefix": "🎨 ",
"empty": ""
}
}默认背景色调假定为深色主题。在浅色主题上,请设置浅色 background 值,或设置 "background": false。
开发
make test # go vet + unit tests (parser, drivers, detection, transcript) make cross # linux/darwin/windows binaries in dist/
关于在终端上测试以及添加新终端,请参阅 CONTRIBUTING.md。
来源:Hacker News · github.com