Skip to content

Themes

Pick from over 40 built-in color themes with a live preview, follow your system's light or dark mode, or write your own JSON theme that reloads as you edit it.

Tools4 minutes to read
Copy & share
On this page13 sections

Quick startLink to this section

Run /theme, or press Ctrl+K and search for "theme", to open the theme picker. The app changes color as you move through the list, so you can see each theme before you choose it.

Default: proxysoul-undertowLink to this section

Empryo uses the ProxySoul Undertow theme by default, in both the terminal UI and the desktop app.

To follow your system's light or dark mode instead, pick system. It uses proxysoul-undertow when your system is dark and proxysoul-undertow-light when it is light.

To decide between light and dark, Empryo first checks your terminal's background color. If it cannot tell, it uses your operating system's setting (macOS appearance, the Windows app theme, or the GNOME color scheme). To force one, set EMPRYO_APPEARANCE=dark or EMPRYO_APPEARANCE=light.

Picking any other theme turns off the automatic switching.

Builtin themesLink to this section

DarkLink to this section

ThemeDescription
proxysoul-undertowProxySoul Undertow: dark blue-grey with sea-glass green and dusty rose (the default)
proxysoul-mainProxySoul: deep violet with hot pink
proxysoul-coffeeProxySoul Coffee: warm brown, amber and burnt orange
proxysoul-waterProxySoul Water: blue-black, cyan and teal
proxysoul-crimsonProxySoul Crimson: plum-black with crimson
proxysoul-empryoThe Empryo brand theme (the old id proxy-empryo still works)
solarized-darkEthan Schoonover's classic
catppuccinCatppuccin Mocha
catppuccin-frappeCatppuccin Frappe
catppuccin-macchiatoCatppuccin Macchiato
gruvbox-darkRetro groove
tokyo-nightTokyo Night
tokyonight-stormTokyo Night Storm
draculaDracula
nordArctic, north-bluish
one-darkAtom One Dark
rose-pineAll natural pine
kanagawaInspired by Katsushika Hokusai
github-darkGitHub Dark
everforest-darkComfortable green
ayu-darkAyu Dark
nightfoxNightfox
cyberdreamCyberdream
oxocarbonOxocarbon
sonokaiSonokai
moonflyMoonfly
melangeMelange
solarized-osakaSolarized Osaka
bambooBamboo
nordicNordic
synthwaveSynthwave
icebergIceberg
emberEmber
vesperVesper

LightLink to this section

ThemeDescription
proxysoul-undertow-lightUndertow Light: slate, sea-glass green and rose (what system uses on a light system)
proxysoul-main-lightProxySoul Light: lilac with violet and pink
proxysoul-coffee-lightCoffee Light: cream, espresso and amber
proxysoul-water-lightWater Light: pale grey-blue with deep teal
proxysoul-crimson-lightCrimson Light: blush with wine red
proxysoul-empryo-lightEmpryo Light: white with forest green
catppuccin-latteCatppuccin Latte
one-lightAtom One Light
github-lightGitHub Light

The old theme ids dark, light, pastel-dusk and pastel-dawn still work. They now point to the Undertow themes, so an older config does not break.

ConfigLink to this section

Your theme is saved for all projects in ~/.empryo/config.json:

json
{
  "theme": {
    "name": "catppuccin",
    "transparent": true,
    "userMessageOpacity": 70,
    "diffOpacity": 30,
    "borderStrength": "strong"
  }
}
FieldDescription
nameThe theme id (built-in or your own)
transparentMake the background transparent, so your terminal's own background shows through
userMessageOpacityHow solid the background of your messages is in transparent mode: 0 (clear), 30 (dim), 70 (subtle), 100 (solid)
diffOpacityHow solid the background of diffs is in transparent mode: 0 (clear), 30 (dim), 70 (subtle), 100 (solid)
borderStrengthHow visible borders are: "default", "strong" or "op"

Theme picker controlsLink to this section

These keys work in the terminal UI theme picker:

KeyAction
↑ / ↓Move through themes (with live preview)
EnterApply the selected theme
TabTurn transparent mode on or off
MChange the message background opacity
DChange the diff background opacity
BChange the border strength

Custom themesLink to this section

To make your own theme, add a JSON file to ~/.empryo/themes/:

bash
mkdir -p ~/.empryo/themes

ExampleLink to this section

~/.empryo/themes/my-theme.json:

json
{
  "_extends": "dark",
  "_label": "My Theme",
  "_description": "A custom dark theme",
  "_variant": "dark",
  "brand": "#ff6600",
  "brand-secondary": "#ff0040",
  "bg-primary": "#1a1a2e",
  "bg-elevated": "#16213e",
  "text-primary": "#e0e0e0",
  "success": "#00ff88",
  "error": "#ff4444"
}

The file name without .json becomes the theme id. This one is my-theme.

Metadata fieldsLink to this section

FieldDescription
_extendsThe built-in theme to start from. You only list the colors you want to change. Default: dark, which means proxysoul-undertow
_labelThe name shown in the theme picker
_descriptionThe description shown in the picker
_variant"dark" or "light", shown as an icon in the picker

Token referenceLink to this section

Write color names in kebab-case, like bg-primary:

  • Brand: brand, brand-secondary, brand-dim, brand-alt
  • Text: text-primary, text-secondary, text-muted, text-dim, text-faint, text-subtle
  • Backgrounds: bg-app, bg-primary, bg-secondary, bg-elevated, bg-popup, bg-popup-highlight, bg-overlay, bg-input, bg-banner, bg-banner-error, bg-user
  • Borders: border, border-focused, border-active, border-slash
  • Status: success, error, warning, info, amber
  • Diff: diff-added-bg, diff-removed-bg, diff-added-sign, diff-removed-sign
  • Accents: accent-user, accent-assistant, accent-system

Legacy formatLink to this section

You can also put several themes in one file, ~/.empryo/themes.json:

json
{
  "my-theme": {
    "_extends": "dark",
    "brand": "#ff6600"
  },
  "another-theme": {
    "_extends": "light",
    "brand": "#0066ff"
  }
}

Hot reloadLink to this section

Empryo watches your theme files. When you save a change to a custom theme, the app updates right away. You do not need to restart.