Themes

Brief

A theme is a small TOML file with three parts: the colours, the CRT texture, and the font. Six come built in, from the phosphor-green hacker to the calm, light quiet-command. The seventh is yours: ~/.config/terminal-delight/theme.toml, which the running window picks up within a third of a second of each save.

The window wears a theme, and every pane follows it until you give that pane its own. Open a pane's DESIGN tray with Ctrl+Shift+D to pick one, and switch follow outer back on to return it to the window's.

On top of any theme you can lay a colour set such as ember or glacier, drag a seed colour around a wheel, borrow the colours of an installed Omarchy theme, or invert the lot. The texture stays the theme's through all of it.

Technical has the file format, the built-ins and the order the layers apply in.

Technical

The theme file

Built in#

ThemeIconLook
quiet-command☀Light, blue accent, every effect off.
field-command▾▾Olive on slate, faint scanlines, a slow band every 40 seconds.
tactical-overdrive★Cyan command deck with a raised bezel.
gamba$$A 1970s slot-machine cabinet in amber and orange, heavy glow and bezel.
deco◈Brass, ivory and jade on near-black, almost no effects, and it asks for the deco skin.
hacker>_Phosphor green, every effect on: scanlines, glow, bloom, a band every 16 seconds, flicker, jiggle, glare.
customyoursYour theme.toml. On first run it's written as a copy of hacker.

A fresh window wears custom tinted with a warm amber seed, #e0913a. To start your own from a built-in, copy its file from app/themes/ in the repository over your theme.toml.

Reloading#

The file is checked every 300 ms. A change reloads it; a file that no longer parses prints theme reload error (keeping current): … and the current theme stays. TD_THEME points at a different file, and then nothing is written on first run. Hovering custom in the tray shows the file's path and ▸ Open in editor.

Keys#

name = "mine"
icon = "▲"
skin = "deco"            # optional: the chrome skin this theme asks for

[colors]
bg      = "#03100a"
surface = "#071a10"
text    = "#86efac"
accent  = "#22c55e"
faint   = "#14401f"
cursor  = "#4ade80"      # optional, defaults to accent
human   = "#f0abfc"      # optional: the colour of your own input to an agent
ansi = ["#000000", "#ef4444", "#22c55e", "#eab308", "#3b82f6", "#a855f7", "#06b6d4", "#d1d5db",
        "#4b5563", "#f87171", "#4ade80", "#facc15", "#60a5fa", "#c084fc", "#22d3ee", "#ffffff"]

[effects]
scanline_opacity = 0.22  # the CRT page lists every key

[font]
family = "JetBrains Mono"  # optional, defaults to the desktop's monospace
size = 14                  # 8–32
cell_height = 20           # 10–48

Colours are six-digit hex, with or without #. bg, surface, text, accent, faint and all sixteen ansi entries are required. Left out, human is the accent's opposite hue, kept light. [effects] is described on the CRT page.

The DESIGN tray#

Ctrl+Shift+D on a pane, or 🎨 in the window's footer for the window. It holds the theme row, the SKIN row (window only), PROGRAM COLOUR, SYNTAX, an INVERT switch, and the colour wheel.

program colour
mono draws programs' colours as shades of the theme's phosphor. ansi shows their real colours, and is what a fresh window starts on. theme keeps their hues but turns them around the theme's seed.
syntax
Colours text the program left uncoloured, by what it looks like: code, agentic, logs or markdown, or off.
wheel
Drag ◉ for the seed colour, T for text, C for its complement, and 👤 for the colour of your own input.
invert
A photographic negative of every colour, including the sixteen ANSI ones. Effects stay as they are.

On the window's tray, ⤓ pass theme down (n) puts every pane back on the window's theme, where n is how many would change. AGENT THEME decides whether agent panes that follow the window paint themselves amber or follow it too.

Colour sets#

A colour set changes the palette and leaves the texture alone: army 🪖, badger 🦡, cherry 🍒, ember 🔥, glacier ❄, nuclear ☢, pineapple 🍍, retro 🌆, tide 🌊, violet 🦇, wood 🪵. They're the same eleven variants the Omarchy Terminal Delight theme ships. Sets from older builds still load but aren't offered.

Paint#

terminal-delight ctl paint on, or the Omarchy bar's 🎨, raises a paint overlay over every pane, and hangs a card from the top edge of the window for the outer: the cabinet the panes sit in, with its mother bar, left bar, status bar and bezel. Arrow up from the top pane to aim the outer, and down to come back to the panes. The first letter of a set paints whichever is aimed at; the arrows walk the shelves; z and Shift+Z turn to the next shelf; f jumps to FAVOURITES and Shift+F stars what's aimed at; d hands a pane back to the window, and the outer back to the house look; Esc folds it away. The shelves are FAVOURITES, COLOUR SETS and DESKTOP PALETTES. Stars are kept in favourites.toml.

Omarchy#

  • Desktop palettes. Every installed Omarchy theme's colors.toml is offered on the DESKTOP PALETTES shelf, converted the way Omarchy converts it for terminals. Painting one replaces the colours and keeps the texture. They're found once, at start, under /usr/share/omarchy/themes, $OMARCHY_PATH/themes, ~/.local/share/omarchy/themes and ~/.config/omarchy/themes; TD_OMARCHY_THEMES replaces that list.
  • TD_PALETTE. A second file holding only [colors], laid over custom. It lets an outside theme switcher rewrite the colours without resetting your effects. Named but missing is fine; present but broken keeps the current theme.
  • Font. A theme with no family uses the desktop's monospace, which Omarchy sets.

Order of layers#

Desktop palette, then the theme's seed, then the colour set, then the wheel's text, complement and input colours, then invert, last. A pane that follows the window re-reads it on every frame; turning follow outer off and on again keeps whatever the pane had of its own.

Sources

  1. The registry, the file format, layering and reload: theme.rs; the built-in files: app/themes/; Omarchy palettes: palette.rs; the paint keys: pane.rs.