Appearance
OpenCode 提供十余种内置主题(tokyonight、catppuccin、gruvbox 等),还支持 system 自适应主题和完全自定义 JSON 主题。通过 /theme 命令快速切换,或在 tui.json 中写死主题名。自定义主题支持 hex、ANSI 色值和深色/浅色双模式。
OpenCode 内置多套配色方案,也支持通过 JSON 文件创建完全自定义的主题。默认使用 opencode 主题,可以随时切换。
终端颜色支持要求
主题要正确显示完整配色,终端需要支持 truecolor(24 位色):
- 检测:运行
echo $COLORTERM,输出应为truecolor或24bit - 开启:在 shell 配置文件中添加
export COLORTERM=truecolor - 兼容终端:iTerm2、Alacritty、Kitty、Windows Terminal、新版 GNOME Terminal 均已支持
不支持 truecolor 的终端会降级到 256 色近似显示,颜色可能略有偏差。
内置主题列表
| 名称 | 说明 |
|---|---|
system | 自动适配终端背景色 |
tokyonight | 基于 Tokyonight 配色 |
everforest | 基于 Everforest 配色 |
ayu | 基于 Ayu 深色主题 |
catppuccin | 基于 Catppuccin 配色 |
catppuccin-macchiato | Catppuccin Macchiato 变体 |
gruvbox | 基于 Gruvbox 配色 |
kanagawa | 基于 Kanagawa 配色 |
nord | 基于 Nord 配色 |
matrix | 黑底绿字极客风 |
one-dark | 基于 Atom One Dark |
团队持续在增加新主题。
system 自适应主题
system 主题会根据你的终端配色方案自动调整,适合日常使用多种终端配色的开发者:
- 根据终端背景色生成灰阶色板,确保最优对比度
- 使用标准 ANSI 色(0-15)进行语法高亮
- 文字和背景色使用
none,保持终端原生外观
适合人群:
- 希望 OpenCode 跟终端整体风格统一的用户
- 使用自定义终端配色方案的用户
- 追求跨应用界面一致性的用户
切换主题
用 /theme 命令调出主题选择器,或在 tui.json 中直接指定:
json
{
"$schema": "https://opencode.ai/tui.json",
"theme": "tokyonight"
}自定义主题
OpenCode 支持 JSON 格式的自定义主题,可以为 diff 视图、Markdown 渲染、语法高亮等各个细节自定义颜色。
主题加载优先级
后面的目录优先级更高,会覆盖前面的同名主题:
- 内置主题(写入二进制)
- 用户配置目录:
~/.config/opencode/themes/*.json - 项目根目录:
<project-root>/.opencode/themes/*.json - 当前工作目录:
./.opencode/themes/*.json
创建主题文件
用户级主题(所有项目生效):
bash
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json项目级主题(仅当前项目生效):
bash
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.jsonJSON 格式说明
主题文件支持以下颜色格式:
- 十六进制:
"#ffffff" - ANSI 色号:
3(范围 0-255) - 颜色引用:
"primary"或defs中自定义的名称 - 深色/浅色双模式:
{"dark": "#000", "light": "#fff"} - 透明/终端默认:
"none"(继承终端前景/背景色)
完整示例(Nord 风格)
json
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord4": "#D8DEE9",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord11": "#BF616A",
"nord14": "#A3BE8C"
},
"theme": {
"primary": { "dark": "nord8", "light": "nord9" },
"text": { "dark": "nord4", "light": "nord0" },
"background": { "dark": "nord0", "light": "#ECEFF4" },
"error": { "dark": "nord11", "light": "nord11" },
"success": { "dark": "nord14", "light": "nord14" }
}
}defs 部分是可选的,用于定义可复用的颜色别名,让主题文件更易维护。
常见问题
Q: 切换主题后没有立即生效怎么办?
A: 确认终端支持 truecolor,并检查 tui.json 中主题名拼写是否正确。可以先用 /theme 命令选择,确认效果后再写入配置文件。
Q: 自定义主题只能影响当前项目吗?
A: 取决于你把主题文件放在哪里。放在 ~/.config/opencode/themes/ 的主题全局生效;放在 .opencode/themes/ 的主题只对当前项目生效。
Q: 内置主题太多了,有没有快速预览的方式?
A: 在 TUI 中运行 /theme 会显示主题列表,选择后立即预览,不满意可以继续切换,不需要修改配置文件。