Theme colour reference
Development reference · View source
“Default” is what an omitted field becomes in a custom theme: a fixed colour, or another role’s colour.
- The fixed defaults are tuned for dark backgrounds. A light custom theme
should set
selection,change_*,diff_*, andjump_label_*itself, as well as the base colours. - Setting
warning,info,change_*, ordiff_*tonulluses a fallback instead of the fixed default:warningborrowschange_modifiedandinfoborrowschange_added(then terminal yellow and green);change_*use the terminal’s green, magenta, and red;diff_*leave lines unfilled, so only the gutter marks show the comparison.
Base colours
| Role | Colours | Default |
|---|---|---|
background | Ground of the active pane | #181818 |
foreground | Ordinary text | #d8d8d8 |
muted | Dimmed interface text | #585858 |
accent | Pane and popup borders, headings | #7cafc2 |
command | Command names in the command palette | accent |
directory | Directory entries in explorers (files use foreground) | accent |
whitespace | The ·, →, and ¬ markers | A dim step off background; muted if background is reset |
Mode carets
Each colours the primary caret and the status line’s mode label in its mode.
| Role | Mode | Default |
|---|---|---|
cursor_normal | Normal | accent |
cursor_insert | Insert | error |
cursor_replace | Replace | Saturated neon green, darker on light grounds; neon magenta if another mode colour is green |
cursor_select | Select | warning |
cursor_command | Command | info |
cursor_secondary | Secondary carets in a multi-selection | foreground |
- The primary caret keeps its mode colour in a multi-selection, or the pending replacement colour.
- If the terminal draws
cursor_secondarythe same as a primary caret, Runyte picks another available colour.
Selections and matches
| Role | Colours | Default |
|---|---|---|
selection | Secondary ranges in a multi-selection | #383838 |
selection_primary | The primary range and ordinary Select-mode ranges | selection |
fuzzy_match_secondary | Individual characters of a scattered fuzzy match | selection |
fuzzy_match_primary | A contiguous fuzzy match | selection_primary |
The fuzzy-match defaults make Space s matches use the same two colours as
selections.
Git and comparisons
| Role | Colours | Default |
|---|---|---|
change_added | Git gutter mark; added lines in a diff buffer; count columns in the changed-file list | #8ddb8c |
change_modified | Git gutter mark | #d2a8ff |
change_removed | Git gutter mark; removed lines in a diff buffer; count columns in the changed-file list | #ff7b72 |
diff_added | Line background, side-by-side comparison | #185435 |
diff_removed | Line background, side-by-side comparison | #642830 |
diff_changed | Line background, side-by-side comparison | #51316f |
change_*are strong mark colours.diff_*are background tints, dark enough on dark themes and light enough on light themes to keep text readable.- Every built-in theme uses high-contrast green, purple, and red for these, so a meaning keeps its hue everywhere.
Destination types
These colour the TYPE column of the Navigator, the buffer list, and the terminal list.
| Role | Type | Default |
|---|---|---|
destination_file | [file] | foreground |
destination_explorer | [explorer] | directory |
destination_generated | Generated pages such as [config] or [help] | muted |
destination_scratch | [scratch] | jump_label_primary |
destination_terminal | [terminal] | change_added |
The STATE column reuses other roles:
| State | Role |
|---|---|
[+] | change_modified |
[STALE], bell | warning |
[RO], exited | muted |
unread | info |
Notification colours
| Role | Colours | Default |
|---|---|---|
error | Error headings and counts | #ab4642 |
warning | Warning headings and counts | #dc9656 |
info | Information headings and unread counts | #a1b56c |
Jump labels
These colour the gw (goto-word) labels.
| Role | Colours | Default |
|---|---|---|
jump_label_immediate | One-key labels for nearby targets. After the first key of a two-key label, the matching second keys move to their target cells in this colour. | error |
jump_label_primary | First character of a two-key label | #5fd7e7 |
jump_label_secondary | Second character of a two-key label | #4ab7c6 |
jump_text_muted | Ordinary text in the active pane while labels are shown, and every pane while a command prompt is open | muted |
- Built-in themes use one neon-cyan hue for both two-key characters. The second is darker on dark backgrounds and lighter on light ones.
- The Zenbones light themes use a darker pair. The mid-gray
seoulbones-darkandzenburned-darkuse a brighter pair. lightandpaperuse lighter jump-only grays forjump_text_muted.- Dimming during command prompts covers
:and the search, rename, and other text-entry prompts. Pending keys such asgandSpacechange nothing. Carets keep their mode colours, and the prompt and its completion list are never dimmed. Turn it off witheditor.command_mode_dim: false.
The look of gw is inspired by
smoka7/hop.nvim
; Runyte’s
implementation is independent.
Accepted but unused
status_background and status_foreground are accepted for compatibility.
The status line is drawn on background with foreground text.