Menú de documentación

Documentación

Themes

Tonal Slate, theme switching and ANSI remapping.

En esta página

One palette, every surface

A TDE theme is a semantic palette, not a colour scheme file. Components never ask for a hex value; they ask for a role — accent, danger, surface, border, input_bg — and the active theme answers. That is why changing the theme restyles the whole desktop, chrome and apps alike, in one step.

The built-in palettes

Sixteen palettes ship in the binary. tonal-slate is the product default; the Appearance picker exposes the same canonical catalog used by configuration, the UI Demo and the capture pipeline.

NameNotes
tonal-slateDefault. Cool slate surfaces, frost text and a soft green accent.
editorial-paperWarm e-paper presentation; aliases include eink and paper.
editorial-inkDark editorial palette; aliases include midnight and dark.
tonal-porcelainLight tonal UI.
tonal-graphiteDark graphite tonal UI.
tonal-sandWarm light tonal UI.
macosLight macOS-inspired palette.
macos-darkDark macOS-inspired palette.
ubuntuUbuntu-inspired dark palette.
windows-xpWindows XP-inspired light palette.
draculaDracula editor palette.
nordNord editor palette.
gruvboxGruvbox dark palette.
solarized-darkSolarized Dark palette.
catppuccin-mochaCatppuccin Mocha palette.
monokaiMonokai editor palette.

You select one either as a mode or by name:

~/.config/tde/config.toml
[theme]
mode = "tonal-slate" # product default
# name = "gruvbox"   # takes precedence over mode

mode is the stable three-palette cycle. tonal-slate accepts slate and default; editorial-paper accepts eink, e-ink, paper and kaleido; editorial-ink accepts midnight, dark and tde. name accepts any of the sixteen canonical ids, their labels and aliases, or a custom file at ~/.config/tde/themes/<name>.toml. A theme that fails to load prints a warning and falls back to mode rather than refusing to start.

Slashes, backslashes and .. in a theme name are rejected, so name can never read a file outside the themes directory.

Switching

Three ways, all live — no restart:

  • Control Center → Appearance. Lists every built-in plus every file in your themes directory. Arrows and Enter, or a click. The selection is persisted.
  • Alt+Shift+E. Cycles Tonal Slate → Editorial Paper → Editorial Ink → Tonal Slate, clears any named override and persists the new mode. Shift is part of the shortcut so plain Alt+E stays free for apps.
  • config.toml. Edit [theme] and restart.

e-Ink is a rendering mode, not just colours

Every theme carries an eink flag. When it is set, TDE runs a post-process pass over the entire final frame — its own chrome and every hosted terminal app — and collapses each cell's foreground and background onto a warm paper-to-ink ramp.

Low-chroma colours are mapped by luminance onto five paper tones; anything with real colour in it snaps to the nearest entry on a small colour ramp. Terminal default colours resolve to paper for backgrounds and ink for foregrounds.

The practical effect: a third-party TUI that paints its own aggressive truecolor palette still reads as e-paper inside TDE, without that app knowing anything about themes. On Tonal Slate and every other non-e-Ink palette the pass is a no-op and colours pass through untouched.

Custom themes

Drop a file in ~/.config/tde/themes/. The stem is the name you put in theme.name, so office.toml becomes name = "office".

A custom theme inherits every role it does not set from a base palette, so a five-line file is a complete, valid theme:

~/.config/tde/themes/office.toml
base = "tonal-slate" # omitted base also inherits Tonal Slate

[colors]
accent = "#3b5bdb"
accent_fg = "#ffffff"
surface = "#f7f5ee"
warn = "#b46b00"
danger = "#b3261e"

Colour spellings

Anywhere a colour is accepted, four forms work:

FormExample
Hex"#7aa2f7"
Truecolor RGB"122,162,247"
Palette index"4" or "idx:4"
Basic name"blue"

An unparsable colour is an error, not a silent fallback.

The [colors] roles

RoleUsed for
bg, fgWindow content background and body text.
dim, brightMuted labels and hints; headings and focused values.
accent, accent_fgThe primary action colour and the text drawn on it.
sel_bg, sel_fgSelected rows.
surfacePanels, window frame fill, menus.
backdropThe desktop behind all windows.
menu_bgMenus and popovers.
success, warn, dangerStatus colours.
iconA secondary decorative accent for glyphs and tags.
input_bg, input_fgEditable fields.
border_on, border_offFocused and unfocused window borders.
title_on, title_offFocused and unfocused window titles.
btn_off, btn_bgInactive button glyphs and idle chip fill.
shadowWindow drop shadows.
pill_on, pill_offThe toolbar pill behind the window buttons.

Setting accent without accent_fg re-derives a readable foreground rather than inheriting a clashing pair from the base palette.

Per-app themes

A few apps carry their own theme override — TDE Code and AI Chat resolve a theme name for their own window without touching the desktop palette. Everything else follows the one global theme.