Theme reference
Theme Format
nameis required, must be unique, and must not contain/.varsis optional. Define reusable colors here, then reference them incolorsorworkingIndicator.colorsmust define all 51 required tokens.scrollbarThumbis optional and falls back toselectedBgwhen omitted.searchMatchBgandsearchMatchTextremain accepted for older theme files but are unused.workingIndicatoris optional. It can override any of the six tones in the outward half of the ordinary∀ramp. Atomic derives omitted tones from selected background, accent, and text roles, then mirrors the palette back afterpeak.- Explicit numeric values from 0 through 255 remain exact terminal palette indices.
- When an index from 0 through 15 seeds an omitted tone, Atomic mixes from its built-in approximation of the common ANSI RGB value. The terminal still controls the explicit index’s actual appearance.
- Both explicit and derived tones update on theme hot reload.
$schema field enables editor auto-completion and validation against the theme JSON schema. Atomic itself rejects theme files with unknown top-level fields or unknown properties under colors, workingIndicator, or export; define reusable custom colors under vars instead.
Color Tokens
Every theme must define all 51 required color tokens. The optional tokens preserve compatibility with themes written before they existed:scrollbarThumb and unused searchMatchBg fall back to selectedBg, and unused searchMatchText falls back to text.
Core UI (11 colors)
Backgrounds & Content (11 required, 3 optional)
Markdown (10 colors)
Tool Diffs (3 colors)
Syntax Highlighting (9 colors)
Thinking Level Borders (6 colors)
Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):Bash Mode (1 color)
HTML Export (optional)
Theexport section controls colors for /export HTML output. If omitted, colors are derived from userMessageBg.
Color Values
Five formats are supported:256-Color Palette
0-15: Basic ANSI colors (terminal-dependent)16-231: 6×6×6 RGB cube (16 + 36×R + 6×G + Bwhere R,G,B are 0-5)232-255: Grayscale ramp
Terminal Compatibility
Atomic uses 24-bit RGB colors. Most modern terminals support this (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). For older terminals with only 256-color support, Atomic falls back to the nearest palette color, which turns a slightly tinted background into a gray. The tool status backgroundstoolPendingBg, toolSuccessBg, and toolErrorBg keep their hue instead: each uses the nearest palette color whose strongest RGB channel is the same, so a green-tinted success background stays green. Give these three tokens different strongest channels (for example blue, green, and red tints) to keep them distinguishable in 256-color terminals, or set a palette index directly.
Check truecolor support: