Themes & fonts
Light, dark, or system; three font sizes; one settings panel.
purplemux ships with a single coherent look and a small set of switches: app theme, font size, and a separate terminal palette. This page covers the first two — terminal colors live on their own page.
Open Settings
Press ⌘, (macOS) or Ctrl, (Linux) to open Settings. The General tab is where theme and font size live.
You can also click the gear icon in the top bar.
App theme
Three modes, applied instantly:
| Mode | Behavior |
|---|---|
| Light | Force the light theme regardless of OS preference. |
| Dark | Force the dark theme. |
| System | Follow the OS — switches automatically when macOS / GNOME / KDE flips between light and dark. |
The theme is stored in ~/.purplemux/config.json under appTheme and synced to every browser tab connected to the server. On the macOS native app, the OS title bar also updates.
Font size
Three presets, surfaced as a button group:
- Normal — the default; root font-size follows the browser.
- Large — root font-size set to
18px. - X-Large — root font-size set to
20px.
Because the entire UI is sized in rem, switching presets scales the whole interface — sidebar, dialogs, terminal — at once. The change applies in real time without reloading.
What changes, what doesn't
Font size scales the UI chrome and the terminal text. It doesn't change:
- Heading hierarchy (relative sizes stay the same)
- Spacing — proportions are preserved
- Code-block syntax styling
If you want to tweak individual elements (e.g. only the terminal, or only the sidebar), see Custom CSS.
Per-device, not per-browser
Settings are stored on the server, not in localStorage. Switching to dark on your laptop will switch your phone too — open https://<host>/ from the phone and the change is already there.
If you'd rather keep mobile and desktop different, that's not currently supported; file an issue if you need it.
What's next
- Custom CSS — override individual colors and spacing.
- Terminal themes — separate palette for xterm.js.
- Keyboard shortcuts — every binding in one table.