‹ Back to the front page

Themes

The board is light or dark out of the box and follows your system. If you would rather it matched your editor and terminal, it takes a theme: two are built in, more are a download away, and your own is a short JSON file.

Built in

One line in the config.

Put the name in ~/.config/kelpie/config.json and restart kelpie:

{
  "theme": "catppuccin"
}

The theme colours the whole board: the session list, the Chat tab, the Terminal view's sixteen ANSI colours and the Diff tab's added and removed lines. While a theme is set, the light and dark button in the masthead is hidden, since the theme decides. Set "theme" back to "" to return to the board's own light and dark.

To download

A file you save, and a path in the config.

Save one next to your config, point theme at it and restart kelpie:

{
  "theme": "~/.config/kelpie/everforest.json"
}

Everforest is the palette by sainnhe, MIT licensed. These files work in any version of kelpie that takes a theme, and you can edit them like your own.

Your own

A base, and only the colours you want to change.

A theme is a JSON file with a base of "light" or "dark" and a colors object. The base supplies every colour the file leaves out, so a theme can be three lines or forty:

{
  "base": "dark",
  "colors": {
    "ground": "#1e1e2e",
    "accent": "#cba6f7",
    "s-needs": "#fab387"
  }
}

Save it anywhere and point theme at the path, ~ included:

{
  "theme": "~/.config/kelpie/my-theme.json"
}

The board reads the file on every load, so once kelpie is pointed at it, an edit shows on the next reload. Changing the theme setting itself needs a restart. Colours are hex (#rgb to #rrggbbaa) or rgb() and rgba(). A file kelpie cannot use, whether bad JSON, a missing base or a value that is not a colour, is ignored as a whole, and the board names the problem as a setup check instead of drawing half a theme.

The quickest start is a built-in one, which carries every name below: catppuccin.json or nord.json.

The colour names

Every name a theme can set.

NameWhat it colours
ground, surface, surface-2The page, the panels and rows on it, and what lifts off those: hovered menu items and options.
ink, ink-soft, mutedTitles, body text, and the quiet text: times, repo names, hints.
rule, rule-soft, edgeDividers, the fainter ones inside menus and lists, and the strongest lines, like the masthead's separators.
accent, accent-softLinks, the selected tab and focus; the soft one tints notices and hovered chips.
s-needs, s-running, s-snoozed, s-closedEach group's colour: its heading, its row stripe and its state chips. Each has a -bg twin for its tinted background.
s-failFailing checks, refusals, and a dev server that has stopped.
term-ground, term-ink, term-0 … term-15The Terminal view: its background, default text, and the sixteen ANSI colours in the usual order, black to bright white.
diff-add-bg, diff-add-ink, diff-add-gutterAdded lines in the Diff tab: the line, its text and the line-number gutter.
diff-del-bg, diff-del-ink, diff-del-gutterThe same for removed lines.