Themes
Customize ekphos appearance with themes
Themes are TOML files stored in ~/.config/ekphos/themes/. ekphos ships with three official themes — ekphos-dawn (the default), dracula, and kanagawa — and you can add your own.
Theme Selector
Press Ctrl+t to open the theme selector — an interactive modal that lists every available theme. As you move the selection, the entire interface updates instantly, so you can preview each theme live before committing to it.
| Key | Action |
|---|---|
↑ / ↓ or k / j | Move selection (live preview) |
Ctrl+n / Ctrl+p | Move selection (live preview) |
Enter | Apply and save the selected theme |
Esc | Cancel and restore the previous theme |
Official themes bundled with ekphos are listed first and tagged official; any custom themes you've added to ~/.config/ekphos/themes/ follow, tagged custom. Confirming with Enter writes the choice to theme in your config, so it persists across restarts.
Nothing is saved until you press Enter. Press Esc at any point to revert to the theme you started with.
Using a Theme
You can also set the theme manually in your config:
theme = "ekphos-dawn"Reload with Ctrl+Shift+R or restart ekphos.
Creating a Theme
Create a new .toml file in ~/.config/ekphos/themes/:
[base]
background = "#1a1a24"
background_secondary = "#24243a"
foreground = "#c0caf5"
muted = "#565f89"
[accent]
primary = "#7aa2f7"
secondary = "#bb9af7"
[semantic]
error = "#f7768e"
warning = "#e0af68"
success = "#9ece6a"
info = "#7dcfff"
[ui]
border = "#3b4261"
border_focused = "#7aa2f7"
selection = "#283457"
cursor = "#c0caf5"Then set theme = "my-theme" in your config.
Color Sections
Base Colors
| Color | Usage |
|---|---|
background | Main background |
background_secondary | Popups, code blocks |
foreground | Primary text |
muted | Secondary text, hints |
Accent Colors
| Color | Usage |
|---|---|
primary | Focused borders, headings |
secondary | Visual mode, secondary accent |
Semantic Colors
| Color | Usage |
|---|---|
error | Errors, invalid links |
warning | Warnings, selected items |
success | Success states, checkmarks |
info | Info messages, links |
UI Colors
| Color | Usage |
|---|---|
border | Unfocused borders |
border_focused | Focused borders |
selection | Text selection |
cursor | Cursor color |
Component Overrides
Override specific UI components for fine-grained control:
Status Bar
[ui.statusbar]
background = "#1a1a24"
foreground = "#c0caf5"
brand = "#7aa2f7"
mode = "#565f89"
separator = "#3b4261"Dialog
[ui.dialog]
background = "#1a1a24"
border = "#7aa2f7"
title = "#7aa2f7"
text = "#c0caf5"Sidebar
[ui.sidebar]
background = "#1a1a24"
item = "#c0caf5"
item_selected = "#e0af68"
folder = "#7dcfff"
folder_expanded = "#7dcfff"Content
[ui.content]
background = "#1a1a24"
text = "#c0caf5"
heading1 = "#7aa2f7"
heading2 = "#9ece6a"
heading3 = "#e0af68"
heading4 = "#bb9af7"
link = "#7dcfff"
link_invalid = "#f7768e"
code = "#9ece6a"
code_background = "#24243a"
blockquote = "#565f89"
list_marker = "#bb9af7"
tag = "#bb9af7"
tag_background = "#24243a"
frontmatter = "#565f89"| Color | Usage |
|---|---|
tag | Tag badge text color |
tag_background | Tag badge background |
frontmatter | Frontmatter text (delimiters, keys, values) |
Outline
[ui.outline]
background = "#1a1a24"
heading1 = "#7aa2f7"
heading2 = "#9ece6a"
heading3 = "#e0af68"
heading4 = "#bb9af7"Search
[ui.search]
background = "#24243a"
border = "#7aa2f7"
input = "#c0caf5"
match_highlight = "#e0af68"
match_current = "#ff9e64"
match_count = "#565f89"| Color | Usage |
|---|---|
background | Search dialog background |
border | Dialog border |
input | Search input text |
match_highlight | Background for all matches |
match_current | Background for current match |
match_count | Match counter text (e.g., "3/15") |
Editor
Customize markdown syntax highlighting in the editor:
[ui.editor]
heading1 = "#7aa2f7"
heading2 = "#9ece6a"
heading3 = "#e0af68"
heading4 = "#bb9af7"
heading5 = "#7dcfff"
heading6 = "#565f89"
code = "#9ece6a"
link = "#7dcfff"
blockquote = "#565f89"
list_marker = "#bb9af7"
bold = "#e0af68"
italic = "#7dcfff"| Color | Usage |
|---|---|
heading1 - heading6 | Heading colors by level (# to ######) |
code | Inline code and code blocks |
link | Markdown links [text](url) |
blockquote | Blockquote markers (>) |
list_marker | List bullets and numbers |
bold | Bold text (text) |
italic | Italic text (text) |
Component sections are optional. Missing values fall back to base colors, then to ekphos-dawn defaults.
Full Theme Example
[base]
background = "#1a1b26"
background_secondary = "#24283b"
foreground = "#c0caf5"
muted = "#565f89"
[accent]
primary = "#7aa2f7"
secondary = "#bb9af7"
[semantic]
error = "#f7768e"
warning = "#e0af68"
success = "#9ece6a"
info = "#7dcfff"
[ui]
border = "#3b4261"
border_focused = "#7aa2f7"
selection = "#283457"
cursor = "#c0caf5"
[ui.content]
heading1 = "#7aa2f7"
heading2 = "#9ece6a"
heading3 = "#e0af68"
heading4 = "#bb9af7"
link = "#7dcfff"
code = "#9ece6a"
tag = "#bb9af7"
tag_background = "#283457"
frontmatter = "#565f89"
[ui.editor]
heading1 = "#7aa2f7"
heading2 = "#9ece6a"
heading3 = "#e0af68"
heading4 = "#bb9af7"
heading5 = "#7dcfff"
heading6 = "#565f89"
code = "#9ece6a"
link = "#7dcfff"
bold = "#e0af68"
italic = "#7dcfff"Reset Themes
To restore default themes:
ekphos --resetThis resets both configuration and themes to defaults.