Skip to content

Theme Format

Theme files at ~/.config/otty/themes/<name>.ottytheme are real TOML (unlike the main config). Schema below.

Minimal example

toml
# ~/.config/otty/themes/midnight.ottytheme
[terminal]
foreground = "#e0e0ff"
background = "#0a0a14"
palette = [
  "#0a0a14", "#ff4d6d", "#7be0ad", "#ffd66b",   # 0-3:  black red green yellow
  "#82aaff", "#c792ea", "#89ddff", "#d0d0ff",   # 4-7:  blue magenta cyan white
  "#3b3b50", "#ff6b88", "#9eebbf", "#ffe28a",   # 8-11: bright black red green yellow
  "#a0c0ff", "#daa6f7", "#a8e6ff", "#ffffff",   # 12-15: bright blue magenta cyan white
]

Activate:

theme = midnight

Only [terminal] is required; every other section is optional.

[terminal] — required

KeyTypeDescription
foregroundcolorDefault text colour
backgroundcolorDefault background colour
palettearray[16] colorANSI 0-15
cursorcolorCursor block (falls back to foreground)
cursor-textcolorForeground while inside cursor
selection-foregroundcolor(legacy — prefer [selection])
selection-backgroundcolor(legacy — prefer [selection])

[ui] — UI chrome

toml
[ui]
title-bar-bg     = "#0e0e18"
tab-bar-bg       = "#0a0a14"
tab-active-bg    = "#1a1a28"
tab-active-fg    = "#ffffff"
sidebar-divider  = "#3b3b50"

Controls the window frame, tab sidebar, command palette tint.

[selection] — selection

toml
[selection]
foreground = "#ffffff"
background = "#3a3a55"

[cursor] — cursor

toml
[cursor]
color = "#ffa830"
style = "beam"      # block | underline | beam
blink = true

[ghost] — autocomplete ghost text

toml
[ghost]
foreground = "#666680"

Inheritance

toml
inherits = "glass-dark"

[terminal]
background = "#000000"     # override only this; everything else from glass-dark

Useful for tweaking a built-in theme without restating all 16 palette entries.

See also

  • Themes — choosing and customizing.
  • Config File Format — separate from theme format.
  • Spec: docs/spec/THEME_SPEC.md in the repo.

Otty