Paneflow 会读取 paneflow.json 顶层的 "theme" 值。目前内置主题是
One Dark 和 PaneFlow 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:
{
"$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 会即时重新解析当前主题。无需重启,也无需
重新加载窗口。
热重载有两个机制:
- 事件驱动路径。
notifywatcher 监听配置目录,并对文件事件做 300 ms debounce。 - 轮询兜底。 如果 OS watcher 无法启动,Paneflow 会退回到
500 ms 的
mtime轮询。
watcher 或兜底机制触发后的下一个 render frame 会显示新调色板。如果你的机器上 热重载静默失败,故障排查页面 列出了常见原因。
主题和排版键会从
paneflow.json热重载。window_decorations只在启动时读取一次, 所以修改它仍然需要重启 Paneflow。
如何创建自定义主题?
Paneflow 目前还不支持用户提供的自定义主题文件。它不会加载 theme.json,
paneflow.json 中也还没有自定义调色板格式。
如果你想要某个具体调色板,请带上使用场景和调色板打开
GitHub issue。内置主题在
src-app/src/theme/builtin.rs 中调校,并随每个 release 交付。