Themes
Eva ships three themes and takes custom ones. A theme is a name and four colors, written in config or dropped into a .eva/themes directory.
Eva ships three themes.
| Id | Name | For |
|---|---|---|
default | Default | most terminals |
contrast | High contrast | low-contrast displays, bright rooms |
mono | Monochrome | terminals with a restricted palette |
Switch theme
/theme contrastRunning /theme with no argument opens the picker rather than complaining.
Set one permanently
The selector is the top-level theme key:
theme: contrastConfiguration explains where that file goes and
how Eva decides which layer wins. The key is read by the terminal surface —
which is why, in a run with the console disabled, Eva reports theme as a
key nothing read.
Write your own
A theme is a name and exactly four colors. Define one under the top-level
themes mapping and select it:
theme: dusk
themes:
dusk:
name: Dusk
colors:
foreground: "#e8e4d8"
muted: "#8a8a7a"
accent: "#d8a657"
warning: "#e78a4e"Or ship it as a file — .eva/themes/dusk.yaml is the same row, keyed by its
base name, so a repository can carry a team's theme:
name: Dusk
colors:
foreground: "#e8e4d8"
muted: "#8a8a7a"
accent: "#d8a657"
warning: "#e78a4e"The four keys, and what each paints:
| Key | Paints |
|---|---|
foreground | the words — yours and the agent's |
muted | thoughts, hints, and secondary text |
accent | the bar beside your words, the spinner, the selected row |
warning | tool calls, and what needs your attention |
Change one color of a built-in
Colors merge onto a theme that already exists, so overriding one key leaves the other three alone:
themes:
default:
colors:
accent: "#ff79c6"A theme with a gap
A row missing one of the four colors is not a theme yet. The console keeps
drawing the default and says so, rather than painting half a theme. The same
holds for a theme that names no row: the default is drawn, and a notice
names the theme that was not found.
Themes are a plugin
eva.themes is a plugin like everything else in Eva, so you can turn it off:
eva --without-plugin eva.themesEva keeps running without it. A plugin that fails or is disabled degrades the run rather than stopping it — the repository has a CI job whose only purpose is to prove that.
Cost and usage
Eva shows what a provider said a request cost, and marks an estimate as an estimate. It never multiplies tokens by a rate and calls the result a cost.
Keys and bindings
How Eva spells a key chord, the six bindings the console ships, and how to add a chord for a command or replace a default binding in config.