1// roles, not hexes 2export const P = { 3 bg0: "#2b2428", // canvas 4 fg1: "#dccbb5", // body text 5 kw: "#e0567e", 6 fn: "#ec84b7", 7 str: "#8abaac", 8} satisfies Palette;
A warm dark color scheme for terminals, editors, and tooling. Cream text, cool dusk ground, color spent where it matters.
// the west keeps the warmth; the ground goes cool
import { afterglow, indigo } from "./dusk";
export function sunset(hour: number): Sky {
if (hour < 17) return indigo;
return afterglow({
ground: "#2b2428",
lastLight: "#dccbb5",
degreesWest: 12,
});
}
Color means weight. Identifiers stay cream; accent color is spent on token classes that matter, split along the horizon.
Chroma 0.14. Keywords and the cursor carry the saturated half of the family; functions ride one step lighter.
return const if awaitsunset() afterglow() map()
Chroma 0.055, one lightness band. Strings, numbers, and types stay calm so structure reads without sparkle.
"#dccbb5" 'dusk'17 0.055 Sky string
960+ workbench colors, 66 token rules, semantic tokens, terminal ANSI, diff and git decorations. The full workbench, not just the editor.
1// roles, not hexes 2export const P = { 3 bg0: "#2b2428", // canvas 4 fg1: "#dccbb5", // body text 5 kw: "#e0567e", 6 fn: "#ec84b7", 7 str: "#8abaac", 8} satisfies Palette;
Nishibi and Nishibi Light themes, side by side in the extension picker.
The full ANSI 16 set. Claude Code, tmux, and every CLI tool render through your terminal's palette, so one scheme covers them all.
~ $ git checkout -b afterglow Switched to a new branch 'afterglow' ~ $ cargo build --release Compiling nishibi v0.3.2 Finished release [optimized] in 3.4s ~ $ ./nishibi west afterglow kw fn dusk str num type ~ $ _
Windows Terminal scheme: dark and light, swap with one paste into settings.
Full surface mapping: toolbar, sidebar, inputs, focus rings, message surfaces, inline code blocks.
Theme import, schema v1, with a light variant generated from the same roles.
The palette ships as custom properties, so widgets pull roles straight from the scheme.
Widget colors from --nishibi-* custom properties.
Role-first, not hex-first. Every variant keeps the exact lightness and chroma structure; only the hue family moves. Switch variants in the header to compare.
The same story inverted: warm paper ground, family ink, both accent tiers darkened instead of brightened. Every role passes 4.5:1 on the paper. This panel always shows the light version of the variant you picked.
// same tokens, paper ground
const paper = dusk("#f9f0eb", { ink: "#3c2e36" });
export function dawn(hour: number): Sky {
return hour > 6 ? Light.of(paper) : Indigo;
}
Ships as a VS Code theme, a Windows Terminal scheme, and the t3code light variant.