Skip to content

ports · Terminals

SP Night for Ghostty

The full 16-colour ANSI mapping, plus cursor, selection and split dividers.

Preview

Ghostty themed with SP Night Noite PaulistaGhostty themed with SP Night GaroaGhostty themed with SP Night Pico do Jaraguá

All three are dark, by decision. The previews below are synthetic — drawn from the palette itself, so they can never drift from what you install.

Install

the file goes here
~/.config/ghostty/themes/sp_night_noite
the file goes here
~/.config/ghostty/themes/sp_night_garoa
the file goes here
~/.config/ghostty/themes/sp_night_jaragua
then add this
theme = sp_night_noite
then add this
theme = sp_night_garoa
then add this
theme = sp_night_jaragua

Those are the paths for the flavour selected in the header — switch it and they follow.

Ghostty resolves theme = <name> against ~/.config/ghostty/themes/ by exact file name — which is why the theme files deliberately have no extension.

Grab the flavour you want (or all three):

sh
mkdir -p ~/.config/ghostty/themes
curl -Lo ~/.config/ghostty/themes/sp_night_noite \
  https://raw.githubusercontent.com/sp-night/ghostty/main/themes/sp_night_noite

Then enable it in ~/.config/ghostty/config:

ini
theme = sp_night_noite

Reload the configuration (ctrl+shift+, on Linux, cmd+shift+, on macOS) or open a new window.

Prefer a checkout? Clone and copy — the files are plain text, there is no build:

sh
git clone https://github.com/sp-night/ghostty.git
cp ghostty/themes/* ~/.config/ghostty/themes/

What gets themed

Ghostty key role what it is
palette = 0…15 ansi.* the full 16-colour ANSI mapping
background / foreground ui.bg / ui.fg laje under the main text
cursor-color / cursor-text ui.cursor / ui.on_accent the sódio cursor, dark text inside it
selection-background / -foreground ui.selection / ui.fg vidro, glass reflecting the street
split-divider-color ui.border fiação, overhead wiring cutting the sky
unfocused-split-fill ui.bg_deep vão, the deepest recess

ghostty.tmpl is the full record of which ghostty key means which role — the table above in complete form. The files in themes/ are what it resolves to, one per flavour.

You never need it to use the theme: the shipped files are plain text and final. It is here so the mapping survives, and so a retuned palette can be rolled through this port without anyone re-deciding what cursor-color means.

What each role means →

Where the colours come from

No hex in this repo was picked by hand. Every value comes from the SP Night palette through its role layer, both published as data: palette.json and roles.json. The contrast floors those colours have to clear are written down in the spec and enforced in CI.