Overview
Themes let you change the visual appearance of Jarvis without editing individual color/font/effect fields. A theme is a file that specifies overrides to the default configuration.Themes use the
ThemeOverrides structure. All sections are optional—only the fields you specify will override the defaults.Built-in Themes
Jarvis ships with 8 built-in themes:jarvis-dark
Default dark theme (Catppuccin Mocha palette)
jarvis-light
Light theme variant
catppuccin-mocha
Catppuccin Mocha community theme
dracula
Dracula color scheme
gruvbox-dark
Gruvbox dark palette
nord
Nord arctic color palette
solarized-dark
Solarized dark
tokyo-night
Tokyo Night colors
Using a Built-in Theme
config.toml
Custom Themes
Custom themes can be YAML or TOML files. Settheme.name to either:
- A theme name (looked up in theme search paths)
- A direct file path (e.g.,
/path/to/my-theme.yaml)
Theme Search Paths
Themes are resolved in this priority order:For each directory, the following extensions are tried:
.toml, .yaml, .yml.If the theme name contains a / or ends in .yaml, .yml, or .toml, it is treated as a direct file path.Theme File Format
YAML Theme Example
my-theme.yaml
TOML Theme Example
my-theme.toml
Overridable Theme Sections
Colors Section
Primary accent color (Mauve)
Secondary accent color (Pink)
Main background color (Base)
Panel background with alpha
Primary text color
Muted/secondary text color (Overlay0)
Border color (Mantle)
Focused panel border glow
Success state color (Green)
Warning state color (Yellow)
Error state color (Red)
Font Section
Terminal/code font family
Font size in points (valid range: 8–32)
Title font size in points (valid range: 8–48)
Line height multiplier (valid range: 1.0–3.0)
Enable Nerd Font glyph rendering
Enable font ligatures (e.g.,
->, =>)Font weight for normal text (valid range: 100–900)
Font weight for bold text (valid range: 100–900)
Visualizer Section
Primary orb color
Secondary orb color
Background Section
Hex grid line color
Solid color when
mode = "solid"Effects Section
Scanline darkness intensity (valid range: 0.0–1.0)
Vignette strength (valid range: 0.0–3.0)
Bloom brightness multiplier (valid range: 0.0–3.0)
Glow color (hex)
Glow width in pixels (valid range: 0.0–10.0)
Terminal Section
Cursor visual style:
block, underline, beamEnable cursor blinking
Window Section
Window-level opacity (valid range: 0.0–1.0)
Enable macOS vibrancy / background blur
Creating a Custom Theme
Example: Creating a GitHub Dark Theme
Theme Preview Colors
For theme selection UI, you can include preview colors in your theme file:Theme Constants
The following theme names are built-in:Advanced: Theme API
Loading a Theme Programmatically
Theme Structure
All fields are
Option<T>, so you only need to specify the fields you want to override.Troubleshooting
Theme not loading
Theme not loading
Check the following:
- Theme file exists in one of the search paths
- File extension is
.yaml,.yml, or.toml - YAML/TOML syntax is valid
- Check logs for theme loading errors
Colors not changing
Colors not changing
Ensure:
- Color values are valid CSS color strings (hex or rgba)
- Theme is applied after config loads
- Hot reload triggered (save config.toml)
Validation errors
Validation errors
Theme overrides must respect validation rules:
- Font sizes: 8–32 (regular), 8–48 (title)
- Opacity values: 0.0–1.0
- Effects intensities: 0.0–3.0