Themes
TUI theming is implemented in crates/tui/src/theme/theme.rs with terminal palette support in crates/tui/src/theme/terminal.rs.
Built-in Themes
Recognized names:
auto(alias of terminal-adaptive mode)terminaldefault(alias of terminal-adaptive mode)darklightdraculanordgruvboxgruvbox-dark(alias ofgruvbox)
ThemeChoice::names() surfaces: auto, dark, light, dracula, nord, gruvbox.
Configure Theme
[tui]
theme = "nord"
frame_rate_cap = 60Semantic Color Keys
Swarmie exposes 15 semantic color keys (Theme and [tui.colors]):
primarysuccesserrorwarningmutedaccenttextbg_subtleborderspinnertext_weaktext_strongborder_focusinfobackground
Color Overrides
Use [tui.colors] to override any subset of semantic colors:
[tui]
theme = "terminal"
[tui.colors]
primary = "#f97316"
accent = "#60a5fa"
text = "#e5e7eb"
bg_subtle = "#1f2937"
border_focus = "#f97316"Terminal-Adaptive Mode
terminal/auto mode queries terminal foreground/background via OSC color detection and derives readable colors at runtime.
Capabilities from crates/tui/src/theme/terminal.rs:
- Detect terminal light/dark tendency.
- Refresh palette on re-query.
- Best-effort downgrade for truecolor/256/16-color terminals.
- Blend and perceptual color distance helpers used for adaptive selection.
If terminal palette detection fails, Swarmie falls back to safe defaults.