On this pageOverview
Editor and tools

Themes and fonts

Pick one of 22 themes, make your own from a palette file, set the interface, editor and terminal fonts, and zoom the whole window.

Try it
16export function rank(docs: Doc[], q: string): Hit[] {
17 // title hits count more than body hits
18 const terms = tokenize(q);
19 const weight = { title: 2.5, body: 1 };
20 return docs.map((d) => score(d, terms, weight))
21 .filter((h) => h.score > 0)
22 .sort((a, b) => b.score - a.score);
23}
~/Projects/hooli-search fix/search-ranking
$ pnpm test
✓ src/rank.test.ts (18)
! src/cache.ts slow: 212ms
✗ src/server.test.ts (1 failed)
Sessions2status colors stay Tori's in every theme
The app's own theme engine, running on this page. Pick a bundled theme, or drop in hooli.json (it passes the legibility check and joins the picker) or gavin.json (it fails, and the window keeps its theme). Change the fonts and sizes, and zoom with the buttons or Cmd+= and Cmd+- once you have clicked into the demo.

Themes

22 bundled themes, and the picker in Settings > Appearance is split into Dark and Light tabs:

Dark (14) Light (8)
Tori Dark (default) Tori Light
Ayu Dark Atom One Light
Catppuccin Frappe Ayu Light
Catppuccin Macchiato Catppuccin Latte
Catppuccin Mocha GitHub Light
Dracula Quiet Light
GitHub Dark Rose Pine Dawn
Monokai Pro Solarized Light
Night Owl
Nord
One Dark Pro
Shades of Purple
SynthWave ’84
Tokyo Night

Ported themes keep the source palette’s hues but always use Tori’s own status and agent colors, never repainted by the port, so working, needs you and done look the same in every theme. Switch in Settings > Appearance, or with the toggle in the top bar, which starts from your system’s light or dark preference the first time you open Tori. File icons take their hues from the theme too.

Pick a theme

Open Settings (the gear in the title bar) > Appearance > Theme. The picker has Dark and Light tabs, and themes are grouped as Bundled and From ~/.config/tori/packs/themes. The theme applies as you click it. More, in the Display title row, opens the themes in the catalog, and each one’s page installs it. Tori ships Tori Dark and Tori Light; if your settings name a theme it no longer ships, Tori offers its pack when it starts. When the selected theme came from the catalog, Update pack and Remove pack sit next to the picker.

The sun and moon button in the top bar switches between your light and dark choice. The first time you open Tori it follows your system’s appearance.

Make your own theme

A theme is one JSON file of colours. Copy a bundled one as a starting point, give it its own id and file name, change the colours, and save it in ~/.config/tori/packs/themes/. Tori watches the folder, so the theme appears in the picker without a restart, and edits to the file apply as you save.

{
"schemaVersion": 1,
"id": "hooli",
"label": "Hooli",
"appearance": "dark",
"colors": {
"canvas": "#15171c",
"card": "#1b1e25",
"text": "#e4e8f0",
"accent": "#4a9eff"
}
}

The file holds flat hex colours only (#rgb, #rrggbb or #rrggbbaa), one per role: surfaces (canvas, card, head, input, hover), lines, text, the accent, status colours, diff and diagnostic colours, and the syntax colours. Everything else, washes, shadows and the names the interface uses, is worked out from those, so a theme file can never contain anything but colours.

Before a theme is used, Tori checks it is legible: text has to contrast with the surfaces behind it. A theme that fails is not offered, and if it is already selected the window keeps the theme it had and toasts say what failed, naming the colours. Fix the file and save it again.

Fonts

Settings > Appearance > Typography sets the UI font family and size, the Editor font family and size, the Terminal font family and size, and the Line height, independently. Any font installed on your Mac works. The bundled terminal font is JetBrains Mono Nerd Font, so prompt glyphs (powerline separators, devicons) render correctly without you needing to install a patched font yourself.

Zoom (Cmd+= / Cmd+- / Cmd+0) scales everything, chrome, editor and terminal together, on top of whatever font sizes you have set, and is kept separate from your settings file so a quick zoom in and out never touches it.