# Themes
16 TOML color themes shared across GoingsOn, Balanced Breakfast, and audiofiles.
## Bundled Themes
| `ayu-light.toml` | Ayu Light | light | [ayu-theme](https://github.com/ayu-theme) |
| `catppuccin-latte.toml` | Catppuccin Latte | light | [Catppuccin](https://github.com/catppuccin/catppuccin) |
| `catppuccin-mocha.toml` | Catppuccin Mocha | dark | [Catppuccin](https://github.com/catppuccin/catppuccin) |
| `dracula.toml` | Dracula | dark | [Dracula](https://github.com/dracula/dracula-theme) |
| `everforest.toml` | Everforest | dark | [Everforest](https://github.com/sainnhe/everforest) |
| `flatwhite.toml` | Flatwhite | light | [Flatwhite](https://github.com/biletskyy/flatwhite-syntax) |
| `gruvbox-dark.toml` | Gruvbox Dark | dark | [Gruvbox](https://github.com/morhetz/gruvbox) |
| `gruvbox-light.toml` | Gruvbox Light | light | [Gruvbox](https://github.com/morhetz/gruvbox) |
| `high-contrast.toml` | High Contrast | high-contrast | Original |
| `kanagawa.toml` | Kanagawa | dark | [Kanagawa](https://github.com/rebelot/kanagawa.nvim) |
| `neobrute.toml` | Neobrute | dark | Original |
| `nord.toml` | Nord | dark | [Nord](https://github.com/nordtheme/nord) |
| `rosepine-dawn.toml` | Rose Pine Dawn | light | [Rose Pine](https://github.com/rose-pine/rose-pine-theme) |
| `rosepine.toml` | Rose Pine | dark | [Rose Pine](https://github.com/rose-pine/rose-pine-theme) |
| `solarized-dark.toml` | Solarized Dark | dark | [Solarized](https://github.com/altercation/solarized) |
| `tokyonight.toml` | Tokyo Night | dark | [Tokyo Night](https://github.com/folke/tokyonight.nvim) |
## File Format
Each theme is a TOML file with four color sections:
```toml
# Attribution (optional)
# Based on Catppuccin by Catppuccin Org -- MIT License
[meta]
name = "Theme Name" # Display name (required)
variant = "dark" # "dark", "light", or "high-contrast"
[background]
primary = "#181825" # Main background
secondary = "#11111b" # Sidebar / panel background
tertiary = "#313244" # Hover / selection background
surface = "#1e1e2e" # Card / elevated surface
[foreground]
primary = "#cdd6f4" # Main text
secondary = "#bac2de" # Secondary text
muted = "#9399b2" # Placeholder / disabled text
[accent]
red = "#f38ba8" # Error, destructive actions
green = "#a6e3a1" # Success, positive actions
blue = "#89b4fa" # Links, primary accent
yellow = "#f9e2af" # Warnings
purple = "#cba6f7" # Tags, special elements
cyan = "#89dceb" # Info, secondary accent
[border]
default = "#45475a" # Default border color
```
### Required Fields
- `[meta].name` -- falls back to the filename if missing
- `[meta].variant` -- falls back to `"dark"` if missing
- At least `[background].primary` and `[foreground].primary` for a usable theme
All other fields are optional. Apps should fall back gracefully when a color key is missing.
### Theme ID
The filename without `.toml` is the theme ID. IDs must contain only alphanumeric characters, hyphens, and underscores. Examples: `catppuccin-mocha`, `gruvbox-light`, `high-contrast`.
## How Apps Load Themes
| GoingsOn | Runtime from disk via Tauri resource glob | `theme-common` |
| Balanced Breakfast | Runtime from disk via Tauri resource glob | `theme-common` |
| audiofiles | Compile-time embed via `include_str!` | Direct TOML parsing |
GoingsOn and Balanced Breakfast include this directory as a Tauri resource (`../../../MNW/shared/themes/*.toml` in `tauri.conf.json`). The `theme-common` crate handles parsing and color extraction at runtime.
audiofiles embeds theme files at compile time and parses TOML directly without the `theme-common` crate.
## Adding a New Theme
1. Create `your-theme-name.toml` in this directory
2. Add an attribution comment at the top if based on an existing theme
3. Fill in all sections (`meta`, `background`, `foreground`, `accent`, `border`)
4. The theme will be available automatically on next build (GO/BB pick it up via the resource glob, AF picks it up via compile-time include)
## License
Individual theme color palettes are attributed to their original creators. The TOML files themselves are part of this project under PolyForm Noncommercial 1.0.0.