Atomic can create themes. Ask it to build one for your setup.
Themes
Themes are JSON files that define colors for the TUI.Table of Contents
Locations
Atomic loads themes from:- Built-in:
dark,light,catppuccin-frappe,catppuccin-latte,catppuccin-macchiato,catppuccin-mocha - Global:
~/.atomic/agent/themes/*.json(legacy~/.pi/agent/themes/*.json) - Project:
.atomic/themes/*.json(legacy.pi/themes/*.json) - Packages:
themes/directories,atomic.themes, or legacypi.themesentries inpackage.json - Settings:
themesarray with files or directories - CLI:
--theme <path>(repeatable)
--no-themes.
Selecting a Theme
Select a theme via/settings or in settings.json:
dark or light.
Creating a Custom Theme
- Create a theme file:
- Define the theme with all required colors (see Color Tokens):
- Select the theme via
/settings.
Theme Format
nameis required and must be unique.varsis optional. Define reusable colors here, then reference them incolors.colorsmust define all 51 required tokens.
$schema field enables editor auto-completion and validation.
Color Tokens
Every theme must define all 51 color tokens. There are no optional colors.Core UI (11 colors)
| Token | Purpose |
|---|---|
accent | Primary accent (logo, selected items, cursor) |
border | Normal borders |
borderAccent | Highlighted borders |
borderMuted | Subtle borders (editor) |
success | Success states |
error | Error states |
warning | Warning states |
muted | Secondary text |
dim | Tertiary text |
text | Default text (usually "") |
thinkingText | Thinking block text |
Backgrounds & Content (11 colors)
| Token | Purpose |
|---|---|
selectedBg | Selected line background |
userMessageBg | User message background |
userMessageText | User message text |
customMessageBg | Extension message background |
customMessageText | Extension message text |
customMessageLabel | Extension message label |
toolPendingBg | Tool box (pending) |
toolSuccessBg | Tool box (success) |
toolErrorBg | Tool box (error) |
toolTitle | Tool title |
toolOutput | Tool output text |
Markdown (10 colors)
| Token | Purpose |
|---|---|
mdHeading | Headings |
mdLink | Link text |
mdLinkUrl | Link URL |
mdCode | Inline code |
mdCodeBlock | Code block content |
mdCodeBlockBorder | Code block fences |
mdQuote | Blockquote text |
mdQuoteBorder | Blockquote border |
mdHr | Horizontal rule |
mdListBullet | List bullets |
Tool Diffs (3 colors)
| Token | Purpose |
|---|---|
toolDiffAdded | Added lines |
toolDiffRemoved | Removed lines |
toolDiffContext | Context lines |
Syntax Highlighting (9 colors)
| Token | Purpose |
|---|---|
syntaxComment | Comments |
syntaxKeyword | Keywords |
syntaxFunction | Function names |
syntaxVariable | Variables |
syntaxString | Strings |
syntaxNumber | Numbers |
syntaxType | Types |
syntaxOperator | Operators |
syntaxPunctuation | Punctuation |
Thinking Level Borders (6 colors)
Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):| Token | Purpose |
|---|---|
thinkingOff | Thinking off |
thinkingMinimal | Minimal thinking |
thinkingLow | Low thinking |
thinkingMedium | Medium thinking |
thinkingHigh | High thinking |
thinkingXhigh | Extra high thinking |
Bash Mode (1 color)
| Token | Purpose |
|---|---|
bashMode | Editor border in bash mode (! prefix) |
HTML Export (optional)
Theexport section controls colors for /export HTML output. If omitted, colors are derived from userMessageBg.
Color Values
Four formats are supported:| Format | Example | Description |
|---|---|---|
| Hex | "#ff0000" | 6-digit hex RGB |
| 256-color | 39 | xterm 256-color palette index (0-255) |
| Variable | "primary" | Reference to a vars entry |
| Default | "" | Terminal’s default color |
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 approximation. Check truecolor support:Tips
Dark terminals: Use bright, saturated colors with higher contrast. Light terminals: Use darker, muted colors with lower contrast. Color harmony: Start with a base palette (Nord, Gruvbox, Tokyo Night), define it invars, and reference consistently.
Testing: Check your theme with different message types, tool states, markdown content, and long wrapped text.
VS Code: Set terminal.integrated.minimumContrastRatio to 1 for accurate colors.