ports · Terminals
SP Night for Alacritty
The 16-colour ANSI mapping, plus the cursor, vi mode, search hits, hints, the footer bar and the line indicator.
the repository ↗ Alacritty ↗ alacritty.toml.tmpl ↗
Preview
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
~/.config/alacritty/themes/sp_night_noite.toml ~/.config/alacritty/themes/sp_night_garoa.toml ~/.config/alacritty/themes/sp_night_jaragua.toml import = ["~/.config/alacritty/themes/sp_night_noite.toml"] import = ["~/.config/alacritty/themes/sp_night_garoa.toml"] import = ["~/.config/alacritty/themes/sp_night_jaragua.toml"] Those are the paths for the flavour selected in the header — switch it and they follow.
Alacritty imports a theme from its own config, so the file sits beside
alacritty.toml and nothing overwrites it. The config format has been
TOML since 0.13.
Grab the flavour you want (or all three):
mkdir -p ~/.config/alacritty/themes
curl -Lo ~/.config/alacritty/themes/sp_night_noite.toml \
https://raw.githubusercontent.com/sp-night/alacritty/main/themes/sp_night_noite.toml Then import it from ~/.config/alacritty/alacritty.toml:
[general]
import = ["~/.config/alacritty/themes/sp_night_noite.toml"] Alacritty watches its configuration and reloads on save, so the colours
change as you write the file. If yours does not, set
general.live_config_reload = true.
Prefer a checkout? Clone and copy, the files are plain text and there is no build:
git clone https://github.com/sp-night/alacritty.git
cp alacritty/themes/*.toml ~/.config/alacritty/themes/ Two keys the theme deliberately leaves alone, both for one reason: this project does not ship a colour nobody measured.
[colors.dim] is absent. The palette’s bright ladder covers the six ANSI
accents and stops there, so there is no measured dim set to write, and
Alacritty derives faint text on its own.
draw_bold_text_with_bright_colors is absent because it is behaviour
rather than colour. Set it in your own config if you want bold text to use
[colors.bright]; the theme will not decide that for you.
primary.bright_foreground was on that list until the palette gained
fg_vivo. It is set now, to the same value ansi.bright_white carries —
a measured colour rather than a brightened guess, which is what put it on
the list in the first place.
What gets themed
| Alacritty key | role | what it is |
|---|---|---|
colors.normal.* / colors.bright.* | ansi.* | the full 16-colour ANSI mapping |
colors.primary.background / .foreground | ui.bg / ui.fg | laje under the main text |
colors.primary.dim_foreground | ui.fg_dim | faint text recedes to the measured dim, not to a multiplier |
colors.cursor.cursor / .text | ui.cursor / ui.on_accent | the sódio cursor, dark text inside it |
colors.vi_mode_cursor.cursor / .text | ui.accent_alt / ui.on_accent | vi mode is a different mode, so the cursor changes hue rather than brightness |
colors.selection.background / .text | ui.selection / ui.fg | vidro, glass reflecting the street |
colors.search.matches | ui.match / ui.on_accent | every hit in táxi, the colour this theme uses for a match |
colors.search.focused_match | ui.accent / ui.on_accent | the hit you are on takes the signature colour, so the cursor is never lost in the crowd |
colors.hints.start / .end | ui.accent / ui.panel | the key to press next is loud, the rest of the label stays concrete |
colors.footer_bar | ui.panel / ui.fg | the search prompt and URI preview sit on exposed concrete |
colors.line_indicator | ui.bg_deep / ui.fg_dim | the position readout recedes into the vão |
alacritty.toml.tmpl is the full record of which alacritty 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 which colour the focused search hit takes.
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.