主题 (Themes)

选择内置主题或定义您自己的主题
通过 OpenCode,您可以从多个内置主题中进行选择,也可以使用能够根据您的终端主题自动适应的主题,或者定义您自己的自定义主题。默认情况下,OpenCode 使用官方的 opencode 主题。

终端要求 (Terminal requirements)

为了让主题以全色彩范围正确显示,您的终端必须支持 真彩色 (Truecolor/24-bit color)。大多数现代终端默认支持此功能,但您可能需要手动启用:
  • 检查支持情况: 运行 echo $COLORTERM,输出应为 truecolor24bit
  • 启用真彩色: 在 shell 配置文件中设置环境变量 export COLORTERM=truecolor
  • 终端兼容性: 确保您的终端仿真器支持 24 位颜色(如 iTerm2、Alacritty、Kitty、Windows Terminal 以及较新版本的 GNOME Terminal)。
如果没有真彩色支持,主题颜色可能会出现偏差,或者回退到最接近的 256 色。

内置主题 (Built-in themes)

OpenCode 附带了多个内置主题:
名称说明
system自动适应终端的背景颜色
tokyonight基于 Tokyonight 主题
everforest基于 Everforest 主题
ayu基于 Ayu 暗色主题
catppuccin基于 Catppuccin 主题
gruvbox基于 Gruvbox 主题
nord基于 Nord 主题
matrix黑底绿字的黑客风格主题
one-dark基于 Atom One Dark 主题
(系统正在不断添加更多新主题)

系统主题 (System theme)

系统主题旨在自动适应您终端的配色方案。与使用固定颜色的传统主题不同,系统主题:
  • 生成灰度: 根据您的终端背景颜色创建自定义灰度,确保最佳对比度。
  • 使用 ANSI 颜色: 利用标准 ANSI 颜色 (0-15) 进行语法高亮和 UI 元素显示,遵循您的终端调色板。
  • 保留终端默认值: 文本和背景颜色使用 none,以保持终端的原生外观。

使用主题 (Using a theme)

您可以通过以下方式选择主题:
  1. 在 TUI 中输入 /theme 命令调出主题选择菜单。
  2. 在配置文件 opencode.json 中指定:
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "theme": "tokyonight"
}

自定义主题 (Custom themes)

OpenCode 支持灵活的基于 JSON 的主题系统。

优先级 (Hierarchy)

主题按以下顺序从多个目录加载(后面的目录会覆盖前面的):
  1. 内置主题: 嵌入在二进制文件中。
  2. 用户配置目录: ~/.config/opencode/themes/*.json
  3. 项目根目录: <project-root>/.opencode/themes/*.json
  4. 当前工作目录: ./.opencode/themes/*.json

创建主题

在上述目录之一中创建 JSON 文件。例如,创建用户全局主题:
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json

JSON 格式支持

  • 十六进制颜色: "#ffffff"
  • ANSI 颜色: 3 (0-255)
  • 颜色引用: "primary" 或自定义定义。
  • 深色/浅色变体: {"dark": "#000", "light": "#fff"}
  • 无颜色: "none"(使用终端默认色或透明)。

示例 (Example)

以下是一个自定义主题文件的示例:
my-theme.json
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {
    "nord0": "#2E3440",
    "nord8": "#88C0D0"
  },
  "theme": {
    "primary": {
      "dark": "nord8",
      "light": "#5E81AC"
    },
    "text": {
      "dark": "#D8DEE9",
      "light": "nord0"
    },
    "background": {
      "dark": "nord0",
      "light": "#ECEFF4"
    }
  }
}
(注:完整的主题配置可以涵盖 UI、Diff 视图、Markdown 渲染及各种语法高亮颜色。)