Skip to content

ports · Shell & CLI

SP Night for eza

A native eza theme.yml — file kinds, permissions, sizes, git status and per-language accents.

Preview

eza themed with SP Night Noite Paulistaeza themed with SP Night Garoaeza 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/eza/theme.yml
the file goes here
~/.config/eza/theme.yml
the file goes here
~/.config/eza/theme.yml

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

These are native eza themes: eza reads a single theme.yml from ~/.config/eza (or $EZA_CONFIG_DIR) on every run — no shell integration, nothing to source.

Grab the flavour you want as theme.yml:

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

That’s it — the next eza invocation picks it up.

Prefer a checkout? Clone and symlink, and switching flavours becomes re-pointing one link:

sh
git clone https://github.com/sp-night/eza.git
ln -sf "$PWD/eza/themes/sp_night_noite.yml" ~/.config/eza/theme.yml

What gets themed

`theme.yml` key role what it is
filekinds.directory syntax.keyword directories in bold marginal — the expressway sign pointing the way
filekinds.executable diagnostic.ok executables in bold ibira, green light
filekinds.symlink / symlink_path syntax.operator / syntax.function symlinks and their targets in sereno, the cold signage of dawn
perms.*_read / *_write / *_execute syntax.constant / diagnostic.error / diagnostic.ok read is sódio, write is brasa, execute is ibira
size.number_* / size.unit_* syntax.number / ui.fg_dim file sizes — the number burns, the unit recedes
users.user_you / user_other ui.fg_dim / ui.fg_muted your user quiet, everyone else quieter — root in brasa
date ui.fg_muted dates as ornament, never shouting
git.new modified deleted git.added / git.modified / git.removed git status in ibira / táxi / brasa
filekinds.pipe socket *_device syntax.type / syntax.macro / syntax.attribute pipes, sockets and devices in temporal, estaiada, táxi
extensions.go .rs .py, … per-language accents source files keep the same accents the editor port gives them

eza.yml.tmpl is the full record of which theme.yml key means which role — the table above in complete formacross all ~80 keys eza exposes. 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 a directory should look like.

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.