Skip to main content

Theme reference

Theme Format

  • name is required, must be unique, and must not contain /.
  • vars is optional. Define reusable colors here, then reference them in colors or workingIndicator.
  • colors must define all 51 required tokens. scrollbarThumb is optional and falls back to selectedBg when omitted. searchMatchBg and searchMatchText remain accepted for older theme files but are unused.
  • workingIndicator is optional and may override any subset 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 after peak. Explicit numeric values from 0 through 255 remain exact terminal palette indices. When a numeric 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 actual appearance of the explicit index. Both explicit and derived tones update on theme hot reload.
The $schema field enables editor auto-completion and validation.

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)

The export section controls colors for /export HTML output. If omitted, colors are derived from userMessageBg.

Color Values

Four 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 + B where 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 approximation. Check truecolor support: