Files
vh 0748522245 feat(zed): add Australis Dark theme for Zed
Adds a Zed theme generated from the canonical palette in the root
README, alongside the existing wezterm and zellij configurations.

The 16 terminal colors carry over unchanged from wezterm/config.lua.
Syntax highlighting follows the spec's stated preference order (blue,
cyan, green) with the Dawn accents reserved for semantic signals and
the rare token roles.

Zed addresses UI surfaces the 16-color terminal palette does not
define. Two neutrals are derived for chrome (#2a2e39, L19) and
elevated surfaces (#313440, L22), both interpolated in CIELAB along
the palette's own neutral ramp so they sit on the ramp the spec
defines. ANSI dim variants are mixed 45% toward the background in LAB
to preserve hue. Overlays use an alpha channel over palette colors
rather than new opaque values.

The theme is generated by build-theme.py, which validates output
against the live Zed theme schema (v0.2.0) and fails if any of its
142 style keys is missing.
2026-07-27 21:35:09 -07:00

3.2 KiB

Zed Australis Dark

Installation Instructions

Copy australis-dark.json into your Zed themes directory:

mkdir -p ~/.config/zed/themes
cp australis-dark.json ~/.config/zed/themes/

Zed loads themes from that directory without a restart. Select Australis Dark from theme selector: toggle (cmd-k cmd-t), or set it in settings.json:

"theme": {
  "mode": "dark",
  "dark": "Australis Dark"
}

Palette usage

The 16 terminal colors are carried over unchanged from wezterm/config.lua. Syntax highlighting follows the spec's stated preference order — blue, then cyan, then green — with the Dawn accents kept rare:

Role Color
Keywords, tags Blue #6388d8
Functions, methods Bright cyan #42dcd1
Types, constructors, enums Cyan #00b1a8
Strings Green #16b866
String escapes, regex Bright green #51e08a
Numbers, booleans, constants Bright blue #a4c4ff
Comments Dark 50 #6e7882
Operators, punctuation Dark 60 #86929d
Decorators, self, preprocessor Magenta #9d78ff / #d8adff

Dawn accents otherwise appear only where the editor demands a semantic signal: red for errors and deletions, yellow for warnings and modifications, bright yellow for search matches (kept distinct from the blue selection and the cyan bracket match).

Derived colors

Zed addresses UI surfaces the 16-color terminal palette does not define. Two neutrals are therefore derived, both interpolated in CIELAB along the palette's own neutral ramp so they land on the ramp the spec defines rather than introducing a foreign hue:

Derived Hex LAB L* Ramp position Used for
Chrome #2a2e39 19 40% of L15 → L25 Tab bar, panels, status bar
Elevated #313440 22 70% of L15 → L25 Popovers, modals, context menus

The editor canvas itself remains the palette's black #222531, with the active tab fusing into it. ANSI dim_* variants, which Zed requires and the palette does not specify, are each mixed 45% toward the background in LAB so hue is preserved.

Overlay colors (selections, hover states, status backgrounds) use an alpha channel over the palette color rather than a new opaque value, keeping the underlying color recognizable.

Regenerating the theme

australis-dark.json is generated, not hand-maintained. Edit build-theme.py and re-run it:

python3 build-theme.py australis-dark.json

The script requires no third-party packages. It fetches the live Zed theme schema and fails if any of the 142 style keys it defines is missing, or if a key outside the schema is emitted; the check is skipped when offline.