Customization

Terminal themes

A separate color palette for the xterm.js terminal — pick one for light, one for dark.

The terminal pane uses xterm.js with its own color palette, independent from the rest of the UI. You pick a dark theme and a light theme; purplemux switches between them as the app theme switches.

Open the picker

Settings (⌘,) → Terminal tab. You'll see two sub-tabs labeled Dark and Light, each with a grid of theme cards. Click one — it applies live to every open terminal.

Why a separate palette

Terminal apps depend on the 16-color ANSI palette (red, green, yellow, blue, magenta, cyan, plus their bright variants). The UI palette is muted by design and would make terminal output unreadable. A purpose-built palette lets vim, git diff, syntax highlighting, and TUI tools render correctly.

Each theme defines:

  • Background, foreground, cursor, selection
  • Eight base ANSI colors (black, red, green, yellow, blue, magenta, cyan, white)
  • Eight bright variants

Bundled themes

Dark

  • Snazzy (default)
  • Dracula
  • One Dark
  • Tokyo Night
  • Nord
  • Catppuccin Mocha

Light

  • Catppuccin Latte (default)
  • GitHub Light
  • One Light
  • Solarized Light
  • Tokyo Night Light
  • Nord Light

The card preview shows the seven core ANSI colors against the theme's background, so you can eyeball contrast before committing.

How light/dark switching works

You pick one dark theme and one light theme independently. The active theme is decided by the resolved app theme:

  • App theme is Dark → your chosen dark theme.
  • App theme is Light → your chosen light theme.
  • App theme is System → tracks the OS, swaps automatically.

So choosing System for the app theme and configuring both sides gives you a terminal that follows your OS day/night without any extra wiring.

Match the app, or contrast it
Some people like the terminal to match the rest of the UI. Others prefer a high-contrast Dracula or Tokyo Night terminal even in a light app. Both work; the picker doesn't enforce anything.

Per-theme, not per-tab

The choice is global. Every terminal pane and every Claude session uses the same active theme. There's no per-tab override; if you need that, file an issue.

Adding your own

Custom theme entries aren't currently part of the UI. The bundled list lives in src/lib/terminal-themes.ts. If you build from source you can append your own; otherwise the supported path is to open a PR with the new theme.

What's next