--- name: omarchy-theming description: Create and manage Omarchy desktop themes. Use when working with colors.toml, terminal themes (Alacritty/Kitty/Ghostty), Hyprland colors, Waybar styling, btop themes, or theme installation/removal. --- # Omarchy Theme Creation Create themes for Omarchy by defining colors in `colors.toml`. Colors automatically propagate to all desktop applications. ## Quick Start 1. Create theme directory: ```bash mkdir -p ~/.config/omarchy/themes/my-theme/backgrounds ``` 2. Create `colors.toml` with all 22 required variables (see schema below) 3. Add wallpaper images to `backgrounds/` 4. Apply theme: ```bash omarchy-theme-set my-theme ``` ## Instructions When creating or modifying Omarchy themes: 1. **Always define all 22 color variables** in `colors.toml` - missing variables cause errors 2. **Use HEX format only** (`#RRGGBB`) - no RGB, HSL, or named colors 3. **Include `backgrounds/` directory** with at least one wallpaper image 4. **For light themes**, create empty `light.mode` file in theme directory 5. **Test with `omarchy-theme-set`** after changes For detailed variable usage per application, see [reference.md](reference.md). ## Theme Structure ``` ~/.config/omarchy/themes/{theme-name}/ ├── colors.toml # [Required] 22 color definitions ├── backgrounds/ # [Required] Wallpaper images (PNG/JPG) ├── preview.png # [Recommended] Theme preview ├── icons.theme # [Recommended] GTK icon theme name ├── neovim.lua # [Recommended] LazyVim colorscheme ├── vscode.json # [Recommended] VS Code theme metadata ├── btop.theme # [Recommended] btop color theme ├── light.mode # [Optional] Empty file = light theme ├── chromium.theme # [Optional] Browser theme RGB └── hyprland.conf # [Optional] Static Hyprland override ``` ## colors.toml Schema ```toml # Core UI (6 variables) accent = "#89b4fa" # Primary accent color cursor = "#f5e0dc" # Terminal cursor foreground = "#cdd6f4" # Primary text background = "#1e1e2e" # Primary background selection_foreground = "#1e1e2e" # Selected text foreground selection_background = "#f5e0dc" # Selected text background # ANSI Normal (8 variables) color0 = "#45475a" # Black color1 = "#f38ba8" # Red (errors) color2 = "#a6e3a1" # Green (success) color3 = "#f9e2af" # Yellow (warnings) color4 = "#89b4fa" # Blue (links) color5 = "#f5c2e7" # Magenta (special) color6 = "#94e2d5" # Cyan (code) color7 = "#bac2de" # White (text) # ANSI Bright (8 variables) color8 = "#585b70" # Bright Black (muted/disabled) color9 = "#f38ba8" # Bright Red color10 = "#a6e3a1" # Bright Green color11 = "#f9e2af" # Bright Yellow color12 = "#89b4fa" # Bright Blue color13 = "#f5c2e7" # Bright Magenta color14 = "#94e2d5" # Bright Cyan color15 = "#a6adc8" # Bright White ``` ## Template Variables Each color supports 3 formats for different contexts: | Format | Example | Output | Use Case | |--------|---------|--------|----------| | `{{ name }}` | `{{ accent }}` | `#89b4fa` | CSS, TOML | | `{{ name_strip }}` | `{{ accent_strip }}` | `89b4fa` | Hyprland `rgb()` | | `{{ name_rgb }}` | `{{ accent_rgb }}` | `137,180,250` | RGBA values | ## Examples ```toml accent = "#7aa2f7" cursor = "#c0caf5" foreground = "#a9b1d6" background = "#1a1b26" selection_foreground = "#c0caf5" selection_background = "#7aa2f7" color0 = "#32344a" color1 = "#f7768e" color2 = "#9ece6a" color3 = "#e0af68" color4 = "#7aa2f7" color5 = "#ad8ee6" color6 = "#449dab" color7 = "#787c99" color8 = "#444b6a" color9 = "#ff7a93" color10 = "#b9f27c" color11 = "#ff9e64" color12 = "#7da6ff" color13 = "#bb9af7" color14 = "#0db9d7" color15 = "#acb0d0" ``` ```toml # Note: Create empty light.mode file for light themes accent = "#1e66f5" cursor = "#dc8a78" foreground = "#4c4f69" background = "#eff1f5" selection_foreground = "#eff1f5" selection_background = "#dc8a78" color0 = "#bcc0cc" color1 = "#d20f39" color2 = "#40a02b" color3 = "#df8e1d" color4 = "#1e66f5" color5 = "#ea76cb" color6 = "#179299" color7 = "#5c5f77" color8 = "#acb0be" color9 = "#d20f39" color10 = "#40a02b" color11 = "#df8e1d" color12 = "#1e66f5" color13 = "#ea76cb" color14 = "#179299" color15 = "#6c6f85" ``` ```lua return { { "folke/tokyonight.nvim", priority = 1000 }, { "LazyVim/LazyVim", opts = { colorscheme = "tokyonight" } }, } ``` ```json { "name": "Tokyo Night", "extension": "enkia.tokyo-night" } ``` ## Theme Commands ```bash omarchy-theme-set my-theme # Apply theme omarchy-theme-current # Show current theme omarchy-theme-list # List available themes omarchy-theme-install # Install from git omarchy-theme-remove my-theme # Remove theme omarchy-theme-update # Update git themes omarchy-theme-bg-next # Cycle wallpaper ``` ## Troubleshooting **Colors not applying:** - Verify all 22 variables defined - Check HEX format (`#RRGGBB`) - Run `omarchy-theme-set` to regenerate **App not themed:** - Place static config in theme folder to override template - Check variable names match colors.toml keys **yq errors:** ```bash sudo pacman -S yq ```