# Themes 16 TOML color themes shared across GoingsOn, Balanced Breakfast, and audiofiles. ## Bundled Themes | File | Name | Variant | Source | |------|------|---------|--------| | `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 | App | Method | Crate | |-----|--------|-------| | 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.