← All extensions

Nord Wave

v0.1.0 · by R1N-K0 · added 3 November 2026

A darker version of the awesome Nord theme — a Zed port of the VS Code theme by Dimitrios Lytras.

Themes

How to install

With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.

You can also open the Extensions panel in the app and search for Nord Wave. The extension's id is nord-wave-theme.

Don't have Forge Super yet? Download it here.

README

From the extension's repository, written by its authors and not by Mentenaz. See the source.

Nord Wave


Nord Wave drops Nord's blue-tinted Polar Night (#2e3440) for a flat neutral #212121, then keeps the full Nord accent palette on top. This port reproduces both the UI chrome and the syntax highlighting on Zed's theme schema.

Syntax specimen

Install

From source

git clone https://github.com/R1N-K0/zed-nord-wave

Then in Zed: zed: extensions → Install Dev Extension → pick the cloned folder. Select the theme with theme selector: toggle → Nord Wave.

Palette

RoleColour
Background (editor, sidebar, tabs, status bar, title bar)#212121
Line numbers, indent guides, rulers#424242
Muted text (inactive tabs, status bar, sidebar)#616161
Editor foreground / variables#d8dee9Nord 4
Punctuation#eceff4Nord 6
UI foreground (titles, inputs)#eeffff
Comments#4c566aNord 3
Types, classes, attributes#8fbcbbNord 7
Accent, functions#88c0d0Nord 8
Keywords, operators, tags#81a1c1Nord 9
Preprocessor, interpolation#5e81acNord 10
Errors, deletions#bf616aNord 11
Decorators#d08770Nord 12
Cursor, warnings, escapes#ebcb8bNord 13
Strings, additions#a3be8cNord 14
Numbers, bracket match#b48eadNord 15

Building

themes/nord-wave.json is generated — don't edit it by hand. Colours live in the palette and mapping tables in scripts/build_theme.py; name, author and version live in package.json. Change either and re-run:

python scripts/build_theme.py   # or: npm run build

Zed's schema requires name and author on the theme family, so the build injects them from package.json rather than leaving them to drift in the generated file. The build also warns if extension.toml has fallen out of sync with package.json.

The artwork in assets/ is generated from the same palette, so it can't drift from the theme. assets/syntax.png is a rendered specimen of the palette, not a screenshot of Zed.

Porting notes

VS Code and Zed do not describe a theme the same way, so a handful of values are adaptations rather than direct copies. They are listed here so nothing is a surprise.

Deliberate deviations

  • Warning colour. Upstream sets editorWarning.foreground to #a3be8c (green), which reads as a slip — every other warning affordance in the theme (inputValidation.warningBorder, editorGutter.modifiedBackground) is #ebcb8b. This port uses #ebcb8b for warning.
  • Active tab. VS Code marks the active tab with a #88c0d0 underline (tab.activeBorder); Zed's schema has no equivalent. Both tab backgrounds stay #212121 as upstream, and the active tab is distinguished by foreground contrast (#eeffff vs #616161), which is what upstream does too.
  • Scrollbar hover. Upstream's scrollbarSlider.hoverBackground is less opaque than its resting state, with the accent reserved for activeBackground. Zed has no active state, so hover maps to the accent (#88c0d0) instead.
  • Focus border. Upstream disables it outright (focusBorder: #ffffff00). Zed leans on focus borders for pane and panel navigation, so this port uses #88c0d0 — the same colour upstream uses for notebook.focusedCellBorder.

Scopes Zed distinguishes and VS Code did not

Zed's tree-sitter captures are finer-grained than the TextMate scopes upstream targets. Where a capture has no counterpart in the source theme it follows canonical Nord:

  • constant → #8fbcbb (upstream leaves bare constants at the default foreground)
  • string.special.symbol, symbol → #8fbcbb
  • hint (inlay hints) → #5e81ac
  • terminal.ansi.dim_* → each ANSI colour blended 55% toward the background

Language-specific rules that could not be preserved

Upstream styles some scopes differently per language. Zed applies one syntax map across all languages, so these were resolved once:

  • Object-literal keys are #d8dee9 (upstream's TypeScript rule). Upstream's JavaScript rule paints them #88c0d0.
  • Semicolons are #eceff4 along with the rest of punctuation. Upstream singles out punctuation.terminator as #81a1c1.

Licence and credits

The mapping, build script and documentation in this repository are MIT licensed. That covers this port only — it grants no rights over the upstream theme.

  • Original VS Code theme: dimitrisnl/nord-wave by Dimitrios Lytras. The upstream repository publishes no licence file, so all rights in the original theme remain with its author. This is an unaffiliated community port, distributed on that understanding — if the original author objects, open an issue and it comes down.
  • Nord by Arctic Ice Studio and Sven Greb, MIT licensed. The accent colours are the Nord palette.

See LICENSE for the full text.