-
-
Notifications
You must be signed in to change notification settings - Fork 8
Themes
purple ships with 11 built-in color themes and supports custom themes via TOML files. The theme system has three color tiers that adapt to your terminal's capabilities.
Press m in the host list to open the theme picker. Themes apply instantly as you scroll through them (live preview). Press Enter to confirm or Esc to revert to the previous theme.
purple theme list # list all themes (built-in + custom)
purple theme set "Dracula" # set and persist the active theme
purple --theme "Catppuccin Mocha" # session-only override (not saved)| Theme | Accent | Style |
|---|---|---|
| Purple (default) | #9333EA |
Dark, purple accent |
| Purple Purple | #9333EA |
Dark, deeper purple tones |
| Catppuccin Mocha | #89B4FA |
Dark, pastel palette |
| Dracula | #BD93F9 |
Dark, vibrant purples |
| Gruvbox Dark | #D79921 |
Dark, warm retro |
| Nord | #88C0D0 |
Dark, cool arctic |
| Tokyo Night | #7AA2F7 |
Dark, neon blues |
| One Dark | #61AFEF |
Dark, balanced blues |
| Catppuccin Latte | #1E66F5 |
Light, pastel palette |
| Solarized Light | #268BD2 |
Light, low contrast |
| No Color | n/a | Modifiers only (bold/dim) |
The No Color theme activates automatically when the NO_COLOR environment variable is set. It uses only text modifiers (bold, dim) with no colors.
Place .toml files in ~/.purple/themes/. Each file defines one theme.
Only name is required. Missing color slots fall back to the default Purple theme.
name = "My Theme"
accent = "#89b4fa"
success = "#a6e3a1"
warning = "#f9e2af"
error = "#f38ba8"All configurable color slots with ANSI 16 overrides:
name = "My Full Theme"
# Primary colors
accent = "#89b4fa"
accent_bg = "#89b4fa"
success = "#a6e3a1"
success_dim = "#6c9c6e"
warning = "#f9e2af"
error = "#f38ba8"
# Borders
border = "#585b70"
border_active = "#89b4fa"
# Text
fg_muted = "#6c7086"
selected_fg = "#cdd6f4"
footer_key_fg = "#1e1e2e"
# Backgrounds (used as background colors on badges and footer keys)
footer_key_bg = "#89b4fa"
badge_bg = "#89b4fa"
# Optional: ANSI 16 overrides (for terminals without truecolor)
accent_ansi = "Blue"
success_ansi = "Green"
warning_ansi = "Yellow"
error_ansi = "Red"| TOML key | Purpose | Fallback |
|---|---|---|
accent |
Selection highlight, active elements | #9333EA |
accent_bg |
Background color for selected rows | #9333EA |
success |
Online status, success messages | #22C55E |
success_dim |
Dimmed success (active tunnels in list) | Derived from success |
warning |
Slow ping, warning messages | #EAB308 |
error |
Offline status, error messages | #EF4444 |
border |
Panel and overlay borders | Derived |
border_active |
Active/focused borders, search border | Derived |
fg_muted |
Secondary text, descriptions | Derived |
selected_fg |
Text color on selected rows | Derived |
footer_key_fg |
Text on footer key badges | Derived |
footer_key_bg |
Background of footer key badges | Derived |
badge_bg |
Background of status badges | Derived |
Two slots are not configurable via TOML: highlight (Bold and Reversed modifiers) and fg_bold (Bold modifier). These are structural and consistent across all themes.
Hex colors (truecolor): #RRGGBB format. Requires a terminal that supports truecolor (most modern terminals). Example: accent = "#89b4fa"
ANSI 16 overrides: Append _ansi to any color key. Used when the terminal does not support truecolor. If omitted, purple automatically maps your hex color to the nearest ANSI 16 color.
Valid ANSI color names: black, red, green, yellow, blue, magenta, cyan, white, darkgray, lightred, lightgreen, lightyellow, lightblue, lightmagenta, lightcyan, gray
Underscore variants also work: dark_gray, light_red, light_green, etc.
- Comments start with
# - Inline comments are supported:
accent = "#89b4fa" # my accent - Values can be quoted or unquoted:
accent = "#89b4fa"andaccent = #89b4faboth work - Blank lines are ignored
- Unknown keys are silently ignored
- Duplicate keys: last value wins
purple detects your terminal's color support and selects the appropriate tier:
| Tier | Detection | Behavior |
|---|---|---|
| Truecolor |
COLORTERM=truecolor or COLORTERM=24bit
|
Full RGB hex colors |
| ANSI 16 | Default when truecolor not detected | 16 standard terminal colors |
| NO_COLOR |
NO_COLOR env var set |
Text modifiers only (bold/dim) |
Custom themes define truecolor values via hex. ANSI 16 values are either auto-derived from the hex or explicitly set via _ansi keys.
- Use the theme picker (
m) to preview themes before committing - Start from a built-in theme that's close to what you want and adjust specific slots
- Test your theme in both truecolor and ANSI 16 mode to ensure it looks good everywhere
- Check your terminal supports truecolor:
echo $COLORTERMshould showtruecoloror24bit