Skip to content

Terminal themes

Themes control the terminal viewport’s color scheme: the 16 ANSI slots plus cursor, selection, and background/foreground. Distinct from skins, which restyle the surrounding app chrome. A profile picks one theme for its terminal; the rest of the app stays on whatever skin is active.

Custom themes live under the user config dir:

  • macOS: ~/Library/Application Support/Baudrun/themes/<id>.json
  • Windows: %APPDATA%\Baudrun\themes\<id>.json
  • Linux: $XDG_CONFIG_HOME/Baudrun/themes/<id>.json (usually ~/.config/Baudrun/themes/)

Two ways to add a custom theme:

  1. Import .itermcolors via Settings → Installed Themes → Import .itermcolors…. Runs a native file-picker; the app parses iTerm2’s XML plist format and writes a normalized JSON copy into the themes directory.
  2. Drop a raw JSON file into the themes directory. On next launch (or re-open of Settings), the theme appears in the picker. There is no UI importer for JSON; hand-editing is a feature, not a workflow.

Deleting a user theme from Settings also removes its file.

IDNamePairs nicely with skin
baudrunBaudrunBaudrun (default)
draculaDraculaany dark skin
solarized-darkSolarized Darkany dark skin
solarized-lightSolarized Lightany light skin
nordNordany dark skin
one-darkOne Darkany dark skin
monokaiMonokaiany dark skin
gruvbox-darkGruvbox Darkany dark skin
tomorrow-nightTomorrow Nightany dark skin
colorblind-safeColorblind Safeany skin (see note)
crt-phosphorCRT Phosphor (Green)CRT skin
synthwaveSynthwaveCyberpunk skin
brogrammerBrogrammerany dark skin
moltenMoltenFoundry skin
tokyo-nightTokyo NightTokyo Night skin

Colorblind Safe uses Bang Wong’s palette (Nature Methods, 2011). Red and green slots are vermillion and bluish-green, perpendicular to the protan/deutan confusion axis, so up vs. down output stays distinguishable for the ~6% of men with red-green colorblindness.

CRT Phosphor is monochrome green: every ANSI slot is a shade of green, so status distinctions read as luminance rather than hue. Pairs with the CRT skin for a matched single-hue aesthetic.

Synthwave is a neon palette (hot-pink magenta, electric cyan, acid yellow) over a near-black canvas. Status colors hit hard for contrast against a busy Cyberpunk skin.

Molten is the terminal half of the Foundry pair: a deep amber ground with a warm-biased ANSI set — hot reds and oranges, amber yellows, desaturated steel blues and teals that don’t fight the warm background. The 16 slots stay semantically readable (red is still red, green still green) since network gear colors output by meaning. Its background matches the Foundry skin’s --bg-terminal, so the viewport blends into the chrome.

Tokyo Night is the bit-exact canonical Tokyo Night Night palette — same hex values folke/tokyonight.nvim, enkia/tokyo-night-vscode-theme, and every alacritty/kitty/WezTerm port ship. Deep #1a1b26 background, soft #c0caf5 foreground, blue #7aa2f7 / cyan #7dcfff / magenta #bb9af7 accents. Pairs with the Tokyo Night skin (whose --bg-terminal matches the theme’s background, so the viewport blends into the chrome the same way Foundry / Molten do).

{
"id": "my-theme",
"name": "My Theme",
"source": "user",
"background": "#0b0b0d",
"foreground": "#e4e4e7",
"cursor": "#ffffff",
"cursorAccent": "#0b0b0d",
"selection": "#1a3a5c",
"selectionForeground": "#ffffff",
"black": "#1e1e22",
"red": "#ff6961",
"green": "#7cd992",
"yellow": "#f5d76e",
"blue": "#6cb6ff",
"magenta": "#d794ff",
"cyan": "#7ce0e0",
"white": "#d4d4d8",
"brightBlack": "#4a4a52",
"brightRed": "#ff8a80",
"brightGreen": "#a2e5b3",
"brightYellow": "#fce488",
"brightBlue": "#94ccff",
"brightMagenta": "#e5b6ff",
"brightCyan": "#a6ecec",
"brightWhite": "#ffffff"
}
FieldRequiredPurpose
idnoStable slug. Omitted IDs are derived from name; clashes get a numeric suffix on import.
nameyesDisplay name in the theme picker.
sourcenoWritten automatically; importer sets "user" on import.
backgroundyesTerminal viewport background.
foregroundyesDefault text color.
cursoryesCursor block fill.
cursorAccentnoCharacter color under the cursor. Defaults to background if unset.
selectionyesSelection highlight background.
selectionForegroundnoText color inside the selection. Unset leaves the renderer in its “use foreground” default.
blackbrightWhiteyesThe 16 ANSI slots (indexes 0-15). Devices pick these via SGR codes 30-37, 40-47, 90-97, 100-107.

All color values accept the same shorthand the iTerm2 / Alacritty theme files use: #rrggbb, #rgb, rgb(), rgba(), or CSS named colors.

IndexJSON keyCommon SGR usage
0blackForeground 30 / background 40
1red31 / 41 (errors, down, failed in highlighter)
2green32 / 42 (up, ok, active in highlighter)
3yellow33 / 43 (warnings)
4blue34 / 44 (interface names in highlighter)
5magenta35 / 45 (MAC addresses in highlighter)
6cyan36 / 46 (IPv4/IPv6 in highlighter)
7white37 / 47
8brightBlack90 / 100 (dim gray; timestamps/dates in highlighter)
9-14brightRedbrightCyan91-96 / 101-106 (bright variants)
15brightWhite97 / 107

Baudrun’s syntax highlighter uses the ANSI slots by name. If you change red you change what down looks like. Device-sourced SGR colors in the 0–15 range (3037, 4047, 9097, 100107) map to the same slots, so a theme recolors highlighter output and raw 16-color device output together.

The 16 slots above are the only colors a theme defines. Devices can also emit two wider color spaces, and Baudrun renders both — they’re just not theme-controlled:

  • 256-color (38;5;N / 48;5;N). Indices 0–15 are the theme slots. Indices 16–231 are the standard 6×6×6 color cube and 232–255 the 24-step grayscale ramp — both computed to the canonical xterm values, identical under every theme. A device that asks for index 200 gets the same color whether you’re on Dracula or Foundry.
  • 24-bit truecolor (38;2;R;G;B / 48;2;R;G;B). Rendered as the exact RGB the device specifies, untouched.

This is deliberate: indices 16–255 and truecolor are explicit, absolute color choices the device made, so Baudrun paints them as-is — no contrast nudging, no remapping — and gradient ramps and color-cube output look the way the device intended. Only the 16 named slots are yours to restyle.

Settings → Installed Themes → Preview opens a modal with a canned RuggedCom-style output sample (prompts, interface status, MAC addresses, IPs, timestamps, warnings, errors). Shows the palette applied through the highlighter against realistic network-gear text so you can judge a theme without switching and reconnecting.

  • Global default. Settings → Default Theme. Applied to any profile that doesn’t set its own.
  • Per-profile override. Each profile’s form has its own theme dropdown. Choose “Default” there to fall back to the global.

A profile’s theme wins over the global default; skins never interact with theme selection.

For a complete working theme with every color slot set and a per-field comment on what it does, see:

The annotated file is the recommended starting point: read it, copy the stripped version, rename the id and name, and tweak the colors you care about.

The fastest path. iTerm2’s color-scheme ecosystem has thousands of themes at iterm2colorschemes.com, Gogh, and plenty of individual gists. Grab an .itermcolors file and use Settings → Import.

The importer parses the plist format via howett.net/plist, maps ANSI 0-15 to black-brightWhite, and uses the file basename (minus .itermcolors) as the display name and ID slug.

Drop a JSON file matching the schema above into the themes directory. Re-open Settings (no restart needed) and it appears in the picker. All 22 color fields should be set; missing ANSI slots render as empty strings and xterm falls back to its built-in defaults, which almost certainly clash.

  • iterm2colorschemes.com: hundreds of curated themes, preview images included.
  • mbadolato/iTerm2-Color-Schemes: the GitHub repo many of the above draw from. Contains .itermcolors sources plus exports for other terminals.
  • Gogh: curated set, primarily distributed as shell scripts for other terminals; the repo includes .itermcolors where available.
  • Background contrast with your skin. If the skin’s --bg-main and the theme’s background are close in hue/lightness, the terminal edge blends into the rest of the UI. Either pick a theme with a distinct background or set --bg-terminal in your skin to match the theme.
  • Bright vs. normal slots. Devices use bright when bold attribute is active. Low contrast between normal and bright kills show version readability on most network gear.
  • Check the highlighter. up, down, and interface names get colored by the highlighter using green, red, and blue. If any of those are hard to read on your background, the highlighter turns into visual noise.
  • Test on real output. A theme that looks great on ls --color might struggle on a Cisco show interface wall of text. Preview is a good start; a real session reveals the rest.

Themes are plain JSON. Export path: the user themes directory. Drop the file where recipients can find it. There is no registry and no server. For broader distribution, publish the .itermcolors source and link to one of the ecosystems above.