π A gem-toned theme for Zed. Color only where it carries meaning β dark and light, cut from the same stone.
Expand a variant to see a full-size window:
Most themes color everything. Geode does the opposite: the canvas is a quiet, violet-tinted stone, and color is spent only on the tokens worth finding β keywords, types, functions, strings and values. Variables stay neutral and parameters recede a touch further, while properties take a calm periwinkle β the shape of the data β so your eye lands where the logic is.
A few principles hold the palette together:
- Amethyst leads. It's the signature accent and runs through the whole UI β selection, focus, the active line β so the editor feels of one piece.
- The gems are a set, not a scatter. Every accent carries the same weight and stays clearly apart from the others, so the palette reads as one family.
- Structure shows its shape. Members and properties take a calm periwinkle β not a gem β so object keys and member chains read as data structure without competing with the accents.
- One color, one meaning. Ruby is reserved for things that went wrong β errors and removed lines β so it never cries wolf on an ordinary number.
- Readable everywhere. Whatever carries color stays easy to read β on the canvas, the current line, under selections and search.
Both cuts share the same hues, each tuned only as far as its canvas needs β on the pale light background, yellows and teals deepen into bronze and forest rather than washing out.
What the gems mean β color is spent on roles, not decoration:
- Amethyst β keywords, and the UI's signature: selection, focus, the active line
- Sapphire β functions and namespaces
- Citrine β types, enums and attributes
- Aquamarine β constants, numbers and booleans
- Emerald β strings
- Ruby β errors and removed lines, and nothing else
Variables stay neutral and parameters take a quieter recessive tone of their own; properties and members take a calm periwinkle, and regular expressions a warm amber β the one warm tone, for a language within the language β so the shape of the data shows without competing with the gems.
Geode is made to stay readable for everyone, and every change is checked automatically rather than judged by eye:
- Comfortable to read. Text keeps its contrast against the background everywhere it matters β including the current line, selections and search highlights β so nothing washes out as you work.
- Friendly to color-blind readers. Nothing important rides on telling red from green: diffs, errors and warnings stay clear through icons, gutter marks and soft background tints, not color alone β and the palette is tested against the common kinds of color blindness.
From the Zed registry (recommended)
- Open the command palette β Cmd/Ctrl Shift P β and run
zed: extensions. - Search for Geode and install.
- Run
theme selector: toggleand pick Geode Dark or Geode Light.
Manual (for development or pinning a version)
- Copy
themes/geode.jsoninto your Zed themes folder β~/.config/zed/themes/on macOS and Linux, or%APPDATA%\Zed\themes\on Windows. - Run
theme selector: toggleand pick Geode Dark or Geode Light.
Geode is a pure theme β no Rust, no build step. The whole thing lives in one file, themes/geode.json, written against Zed's theme schema v0.2.0.
- Run
zed: install dev extensionand point it at this folder. - Edit the JSON, then
zed: reload extensionsto see changes live.
Close
geode.jsonin Zed before editing it from another tool β an open editor buffer will overwrite your changes when it saves.
Issues and pull requests are welcome. CONTRIBUTING.md covers local setup and the rules that keep the palette coherent. Changes that affect how colors look should include a before/after note.
MIT Β© Almela