跳到内容

主题

从 Settings 或 paneflow.json 选择 Paneflow 的内置主题。One Dark 和 PaneFlow Light 现在随应用交付,并且无需重启即可热重载。

Paneflow 会读取 paneflow.json 顶层的 "theme" 值。目前内置主题是 One DarkPaneFlow Light。省略该键、设为 null,或在 Settings 中重置,都会使用默认主题 One Dark

TL;DR。 在界面里使用 Settings -> Themes,或者在 paneflow.json 中设置 "theme": "One Dark" / "theme": "PaneFlow Light"。主题修改会在保存后热重载,无需重启应用。

如何切换当前主题?

打开 Settings -> Themes,选择三个分段之一:

分段Paneflow 保存的值
Light"PaneFlow Light"
Dark"One Dark"
System点击时匹配 OS 外观的具体主题:浅色外观保存 "PaneFlow Light",否则保存 "One Dark"

System 目前不会作为持续跟随 OS 的模式保存。选择后,Paneflow 会写入 上面两个具体内置主题名之一。

你也可以直接编辑 paneflow.json

paneflow.json
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0",
"theme": "PaneFlow Light"
}

配置文件位置:

OS路径
Linux~/.config/paneflow/paneflow.json
macOS~/Library/Application Support/paneflow/paneflow.json
Windows%APPDATA%\paneflow\paneflow.json

schema 列出了规范拼写。运行时查找主题名时不区分大小写,但使用规范名称 可以让编辑器补全和 review diff 更干净。未知名称会回退到 One Dark, 并在下次解析文件时写入日志警告。完整的可识别键位于 配置 schema

Paneflow 今天内置哪些主题?

当前 build 中稳定可用。

名称说明
"One Dark"深色主题,默认。受 Atom 的 One Dark 调色板启发,并针对 Paneflow 的终端和应用 chrome 做了调整。
"PaneFlow Light"浅色主题,带白色工作区、浅色应用 shell 和专用浅色语法调色板。

Paneflow 主题定义 36 个终端颜色槽位:24 色 ANSI 调色板 (8 个色相 x 3 种强度:normal、bright、dim)、5 个基础背景/前景色、 光标、选区与派生选区前景、滚动条 thumb、链接文本,以及 2 个标题栏颜色。 Paneflow 还为 Diff surface 保留了单独的语法调色板。

选区前景色不是手工固定的。Paneflow 会在主题加载时重新计算,直到它相对 选区背景达到 APCA Lc >= 45,让选中的文本保持可读。

主题会影响什么?

主题影响的不只是终端 ANSI 颜色:

  • 终端背景、前景、光标、选区、滚动条、链接和 ANSI 调色板;
  • 从当前主题派生的应用 chrome 调色板;
  • Markdown pane 和表格;
  • Diff 和 Review 的语法颜色;
  • 支持平台上的标题栏和原生材质对齐。

两个相关设置与主题名分离:

  • terminal.cursor_color 只覆盖终端光标。null 使用当前主题的光标颜色。
  • commands[].workspace.color 是 workspace template 颜色,不是主题 accent。

主题热重载如何工作?

保存 paneflow.json 时,Paneflow 会即时重新解析当前主题。无需重启,也无需 重新加载窗口。

热重载有两个机制:

  • 事件驱动路径。 notify watcher 监听配置目录,并对文件事件做 300 ms debounce。
  • 轮询兜底。 如果 OS watcher 无法启动,Paneflow 会退回到 500 ms 的 mtime 轮询。

watcher 或兜底机制触发后的下一个 render frame 会显示新调色板。如果你的机器上 热重载静默失败,故障排查页面 列出了常见原因。

主题和排版键会从 paneflow.json 热重载。window_decorations 只在启动时读取一次, 所以修改它仍然需要重启 Paneflow。

如何创建自定义主题?

Paneflow 目前还不支持用户提供的自定义主题文件。它不会加载 theme.jsonpaneflow.json 中也还没有自定义调色板格式。

如果你想要某个具体调色板,请带上使用场景和调色板打开 GitHub issue。内置主题在 src-app/src/theme/builtin.rs 中调校,并随每个 release 交付。