Choose a palette for Paneflow's terminals and interface, then select a light, dark, or system appearance. Paneflow includes five palettes: Paneflow, Vercel, Claude, Cursor, and Tailwind. Each has a light and a dark variant. The default is Paneflow Dark.
Theme changes apply without restarting Paneflow, whether you use the
settings or edit paneflow.json.
Choose a theme
- Open Appearance in Paneflow settings.
- Select Light, Dark, or System.
- Choose a palette from Preset.
| Mode | Effect | Saved theme_mode value |
|---|---|---|
| Light | Use the light variant of the selected palette. | "light" |
| Dark | Use the dark variant of the selected palette. | "dark" |
| System | Follow your operating system's light or dark appearance. | "system" |
System remains selected after you close and reopen Paneflow. When your system appearance changes, Paneflow switches variants while keeping the same palette.
To return to Paneflow Dark, select Reset to default in the Theme section.
Included palettes
Use these exact names in the theme field of paneflow.json. Palette
names stay the same in every language.
| Preset | Light variant | Dark variant |
|---|---|---|
| Paneflow | Paneflow Light | Paneflow Dark |
| Vercel | Vercel Light | Vercel Dark |
| Claude | Claude Light | Claude Dark |
| Cursor | Cursor Light | Cursor Dark |
| Tailwind | Tailwind Light | Tailwind Dark |
Names are case-insensitive. Older configurations still work: One Dark
resolves to Paneflow Dark, and PaneFlow Light resolves to
Paneflow Light. The old names Vercel, Claude, and Cursor resolve
to their dark variants.
Set a theme in paneflow.json
Set theme to a variant from the table and theme_mode to the matching
mode. For example, to use Claude's light palette:
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0",
"theme": "Claude Light",
"theme_mode": "light"
}To follow your system appearance instead, set theme_mode to
"system". Paneflow keeps the palette selected by theme and chooses
its light or dark variant to match your system.
The configuration file is stored at these default locations:
| System | Path |
|---|---|
| Linux and macOS | ~/.paneflow/paneflow.json |
| Windows | %USERPROFILE%\.paneflow\paneflow.json |
If you set PANEFLOW_HOME, edit the file in that directory. See the
configuration reference for all settings.
If theme_mode is omitted or null, Paneflow infers light or dark mode
from the theme name. To restore the default configuration, remove both
theme and theme_mode, or set both to null.
What the theme changes
- Terminal background, text, cursor, selection, scrollbar, links, and ANSI colors.
- Interface backgrounds, borders, and text.
- Markdown panes and tables.
- Syntax colors in Changes and Files.
Some appearance settings are separate:
terminal.cursor_coloroverrides the terminal cursor color. Set it tonullto use the theme's cursor color.- Interface style controls window materials and transparency. See appearance settings.
commands[].workspace.colorsets a workspace template's color.
If the theme does not change
After editing paneflow.json, save the file. If the previous theme stays
visible, check that you edited the active configuration file and that
its JSON is valid. During reload, Paneflow keeps the previous valid
configuration if the new file contains a JSON error.
If you see Paneflow Dark instead of the palette you wanted, check the theme name against the table above. An unknown name falls back to Paneflow Dark and writes a warning to the logs.
For further checks, see configuration troubleshooting.
Changing window_decorations requires a restart, even though theme
changes do not.
Custom palettes
Paneflow supports the bundled palettes only. It does not load
theme.json or custom palettes from paneflow.json.
To request another palette, open a theme request on GitHub
and include the colors and how you would use them. To contribute a
bundled theme, start with src-app/src/theme/builtin.rs in the desktop
repository.