Themes
Buoy ships with seventeen themes. Each is a CSS variable palette referenced from a [data-theme="<id>"] block, so switching is instant and never restarts a watch or reloads the page.
Open Settings, Appearance. Click a theme’s swatch to apply it. The active theme persists across restarts.
Catalog
Dark
| Theme | Description |
|---|---|
| Dark (default) | Deep navy with muted text, easy on long sessions. |
| Dim | A softer dark with higher text contrast and warmer surfaces. |
| Solarized | Calm teal-on-cyan tones. |
| Nord | An arctic palette: icy frost blues on slate. |
| Gruvbox Dark | Warm retro earth tones. |
| Catppuccin Mocha | Soft pastel mauves and pinks on dark. |
| Tokyo Night | Deep navy with neon-sign blues and purples. |
| Dracula | Vibrant purple, pink, and cyan on slate. |
| Everforest | Sage and pine, with forest-floor warmth. |
| Inkwell | Ink-dark backgrounds with cream parchment text and cool blue accents. |
| Graphite | Neutral monochrome grays with a steel-blue accent. |
| Adwaita | GNOME’s flat neutral grays with a confident saturated blue. |
| Pewter | Medium neutral gray, neither dark nor light, easy in mixed lighting. |
Light
| Theme | Description |
|---|---|
| Light | A sunny palette suitable for slide decks and bright offices. |
| Solarized Light | Cream backgrounds with the same teal accents as Solarized. |
| Adwaita Light | Soft warm gray with Tango accents, modeled on Emacs’s adwaita-theme. |
| Catppuccin Latte | The light half of Catppuccin: pastel mauves on cream. |
Impersonation Override
When /as is active, Buoy paints a red border around the entire app, regardless of the active theme. The border clears when impersonation ends. See contexts.md for details on the impersonation lifecycle.
Adding a Theme
There is no in-app theme editor. To add a theme, you would extend the registry in src/state/themes.ts and add a matching [data-theme="<id>"] block in App.css. Pull requests are welcome.