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

80 lines
3.2 KiB
Markdown

## Zed Australis Dark
### Installation Instructions
Copy `australis-dark.json` into your Zed themes directory:
```sh
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`:
```json
"theme": {
"mode": "dark",
"dark": "Australis Dark"
}
```
### Palette usage
The 16 terminal colors are carried over unchanged from
[`wezterm/config.lua`](../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:
```sh
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.