Xscriptor Themes for Zed
Twelve Xscriptor color palettes ported to Zed as a single theme extension.
| Theme | Appearance |
|---|---|
| Xscriptor X | dark |
| Xscriptor Madrid | light |
| Xscriptor Lahabana | dark |
| Xscriptor Miami | dark |
| Xscriptor Paris | dark |
| Xscriptor Tokio | dark |
| Xscriptor Oslo | dark |
| Xscriptor Helsinki | light |
| Xscriptor Berlin | dark |
| Xscriptor London | light |
| Xscriptor Praha | dark |
| Xscriptor Bogota | dark |
Every theme is generated from the palettes in colors.json (background, foreground and the 16 ANSI colors) and keeps the original Xscriptor names.
Install
From the Zed extension registry
Once the extension is published: open the Extensions page in Zed (zed: extensions), search for Xscriptor Themes and install it. Then pick a theme from the theme selector (theme selector: toggle) or set it in settings.json:
{
"theme": {
"mode": "dark",
"dark": "Xscriptor X",
"light": "Xscriptor Madrid"
}
}Manual install
Copy the theme files into Zed's user themes directory:
cp themes/*.json "${XDG_CONFIG_HOME:-$HOME/.config}/zed/themes/"Install as a dev extension
From the Extensions page, click Install Dev Extension and select this directory (the one containing extension.toml).
Regenerate
python3 generate.pygenerate.py reads colors.json and rewrites themes/, one Zed theme family per palette.
Format notes
The themes target the current Zed theme schema (https://zed.dev/schema/themes/v0.2.0.json, one theme family per file):
- Legacy CSS-style colors (
rgba(...)) were converted to Zed's hex formats (#rrggbb,#rrggbbaa). - Terminal colors use the flat
terminal.ansi.*keys, withterminal.ansi.dim_*derived by dimming the base ANSI colors andterminal.bright_foreground/terminal.dim_foregroundtaken from the palette. - The cursor and selection colors are mapped to the first entry of
players. - Diagnostics colors (
editor.diagnostics.*) are mapped to the currenterror,warning,infoandhintroles. - Syntax entries are objects (
{"color": ...}); bold is700;underlineemphasis is not supported by the schema, so only its color is kept. - Syntax covers Zed's canonical captures (
number,boolean,property,attribute,enum,variant,title,link_text,link_uri,selector,preproc,string.escape,string.special.symbol,diff.*, ...) plus common legacy names; any color below 3:1 contrast against the background is nudged toward the foreground. - The accent color drives
text.accent,icon.accentand theaccentsarray. - UI surfaces (panels, tabs, title/status bars, elements, borders, scrollbars, search matches, status colors, version-control colors) are derived from
background/foregroundthrough blends and alpha, so the whole UI stays in the palette instead of falling back to Zed's defaults.
Publishing
The extension is ready to submit to the Zed extension registry:
Fork
zed-industries/extensions.Add this repository as a submodule under
extensions/xscriptor-theme(HTTPS URL) and add an entry to the top-levelextensions.toml:[xscriptor-theme] submodule = "extensions/xscriptor-theme" version = "0.1.0"Run
pnpm sort-extensionsand open a PR.
Checklist: extension ID ends with -theme, provides only themes, ships an allowed license (MIT), and all user-facing text is in English.