Skip to content

Add Cyberpunk Noir theme#163

Open
4nrry wants to merge 1 commit into
warpdotdev:mainfrom
4nrry:add-cyberpunk-noir-theme
Open

Add Cyberpunk Noir theme#163
4nrry wants to merge 1 commit into
warpdotdev:mainfrom
4nrry:add-cyberpunk-noir-theme

Conversation

@4nrry

@4nrry 4nrry commented Jul 14, 2026

Copy link
Copy Markdown

Discord username (optional)

4nrry

(Discord dropped the #XXXX discriminator, so this is the full modern username.)

Name of theme

Cyberpunk Noir (standard/cyberpunk_noir.yaml)

A neon theme built around one constraint: every ANSI slot is the colour its name claims, and each bright is a hotter version of its normal rather than a different hue or a gray.

That constraint is the reason the theme exists. Several existing neon/cyberpunk themes in this repo were auto-generated from Alacritty collections, and the conversion mapped tones onto ANSI slots by position rather than by hue, so the slot names no longer describe their colours. A few examples from the repo as it stands:

  • base16/base16_papercolor_dark.yaml: normal.blue is #ff5faf (pink), normal.cyan is #ffaf00 (orange), bright.yellow is #5faf00 (green).
  • standard/cyberpunk-night_city.yaml and standard/cyberpunk-v.yaml: the entire bright row is grayscale, e.g. bright.blue #b8b8b8, bright.magenta #e8e8e8.

Anything that requests a colour by name (shell prompts, status lines, syntax highlighting) gets an arbitrary hue back on those themes. Cyberpunk Noir keeps the mapping honest so the neon actually lands where a tool asks for it.

One other deliberate choice: bright.black is a slate violet at roughly 5:1 contrast against the background, not a near-black. It is the slot most tools reach for when they want dim-but-readable text (comments, secondary metadata), and pushing it toward the background is what makes that text unreadable.

How Has This Been Tested?

Yes, ran python3 ./scripts/gen_theme_previews.py standard as directed.

One thing worth flagging: regenerating the previews produced changes beyond my own row. standard/README.md on main was missing rows for soft_tactile_warp_cream, soft_tactile_warp_dark and soft_tactile_warp_light (the yaml and svg files are already committed, only the README rows were absent), and it had zenburn_colorblind_high_contrast sorted before zenburn_colorblind. The script's output corrects both. I left those in rather than hand-trimming the file, so that the committed README matches exactly what the script generates. Happy to strip them into a separate PR if you would rather keep this one to a single theme.

No custom background image, so no licensing or binary-size concerns.

Notes

Every other preview SVG regenerated byte-identical, so the diff is limited to the new theme, its preview, and the README rows above.

A neon theme with a deliberately coherent ANSI palette: every slot is the
colour its name claims, and each bright is a hotter version of its normal
rather than a different hue or a gray. Tools that pick colours by name
(prompts, status lines, syntax highlighting) therefore stay legible instead
of rendering an arbitrary hue.

bright.black is held at roughly 5:1 against the background, since it is the
slot most tools reach for when they want dim-but-readable text.

Regenerating previews also picks up three soft_tactile_warp_* rows and a
zenburn sort order that were missing from standard/README.md on main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant