A dark color scheme featuring deep purple-black backgrounds with carefully calibrated accent colors for optimal contrast and readability.
Install from the marketplace:
- Open Extensions (⌘+Shift+X / Ctrl+Shift+X)
- Search for "Subliminal Nightfall"
- Click Install
- Select theme: Preferences → Color Theme → Subliminal Nightfall
Or install via command line:
code --install-extension hamrahm.subliminal-nightfall- Open Zed
- Run command:
zed: extensions - Search for "Subliminal Nightfall"
- Click Install
- Select theme:
theme selector: toggle→ Subliminal Nightfall
Theme Variants:
- Subliminal Nightfall - Standard opaque theme (100% opacity)
- Subliminal Nightfall Hazy - Transparent blurred variant (75% opacity) with window blur effect
- Subliminal Nightfall Cloudy - Semi-transparent blurred variant (90% opacity) for subtle blur
Or install as dev extension:
# Clone this repository
git clone https://github.com/mhamrah/subliminal-nightfall.git
# In Zed, run: "zed: install dev extension"
# Select the cloned repository's zed/ directory{
"mhamrah/subliminal-nightfall",
lazy = false,
priority = 1000,
config = function()
vim.opt.runtimepath:append(vim.fn.stdpath("data") .. "/lazy/subliminal-nightfall/neovim")
vim.cmd([[colorscheme subliminal-nightfall]])
end,
}use {
'mhamrah/subliminal-nightfall',
config = function()
vim.opt.runtimepath:append(vim.fn.stdpath("data") .. "/site/pack/packer/start/subliminal-nightfall/neovim")
vim.cmd([[colorscheme subliminal-nightfall]])
end
}git clone https://github.com/mhamrah/subliminal-nightfall.git
ln -s "$(pwd)/subliminal-nightfall/neovim" ~/.config/nvim/colors/subliminal-nightfallAdd to your init.lua or init.vim:
vim.opt.runtimepath:append(vim.fn.expand("~/.config/nvim/colors/subliminal-nightfall"))
vim.cmd([[colorscheme subliminal-nightfall]])Add to ~/.config/ghostty/config:
theme = subliminal-nightfall
Or manually configure colors in your Ghostty config:
# Copy the theme file
cp ghostty/subliminal-nightfall ~/.config/ghostty/themes/
# Add to config
theme = subliminal-nightfall#9ccfd8- Functions, methods, strings#6699cc- Keywords, types, constructors#c4a7e7- Numbers, constants, enums#7f7f7f- Comments
#191724- Deep purple-black#1f1d2e- Sidebars, panels#e0def4- Primary text#484e5b- Text selection#5fb3b3- Cursor color
Subliminal Nightfall is designed for extended coding sessions with:
- Deep purple-black backgrounds that reduce eye strain
- Three-level ANSI color system (base/bright/dim) for terminal flexibility
- Carefully calibrated contrast ratios for readability
- Distinct colors for different syntax elements
- Muted accent colors that don't fatigue
Subliminal Nightfall Hazy and Cloudy (Zed only) offer transparent, blurred experiences:
| Variant | Opacity | Best For |
|---|---|---|
| Hazy | 75% | Maximum blur effect, desktop integration |
| Cloudy | 90% | Subtle transparency, enhanced readability |
Both variants feature:
- Background blur effects that integrate with your desktop (
background.appearance: "blurred") - Fully transparent editor backgrounds to show blur through
- Transparent editor gutters for a lighter git and line-number margin
- More opaque elevated surfaces so menus and popovers remain readable
- Semi-transparent panels, sidebars, and status bars with subtle variance
- Full syntax color readability despite transparency
- Perfect for those who prefer a less visually heavy workspace
This is a monorepo containing themes for multiple platforms:
subliminal-nightfall/
├── tools/colorloom/ # Rust theme generator CLI
├── packages/
│ ├── core/ # Color definitions (TypeScript)
│ └── website/ # Showcase site (Astro)
├── zed/ # Self-contained Zed extension
│ ├── extension.toml # Zed extension manifest
│ ├── extension/ # Zed extension assets
│ └── themes/ # Zed theme JSON
├── cursor/ # VS Code/Cursor extension
├── neovim/ # Neovim colorscheme
├── ghostty/ # Ghostty terminal theme
└── theme.toml # Single source of truth for colors
Note: The upstream Zed Extensions registry must include path = "zed" in extensions.toml so the Zed manifest and assets can stay isolated from the repository root.
ColorLoom is a powerful Rust CLI tool that generates all theme files from a single theme.toml configuration.
# Install (from source)
cd tools/colorloom && cargo install --path .
# Generate all themes
colorloom generate
# Validate configuration
colorloom validate
# List targets and variants
colorloom list- Single Source of Truth: Define colors once in
theme.toml, generate for all platforms - Variant Support: Automatically generates base, hazy (75%), and cloudy (90%) variants
- Blur Effects: Full support for Zed's
background.appearance: "blurred" - Comprehensive Coverage: 100+ color settings per target for complete UI theming
| Target | Output | Variants |
|---|---|---|
| Zed | Single JSON with all variants | base, hazy, cloudy |
| VS Code/Cursor | Separate JSON per variant | base, hazy, cloudy |
| Neovim | Lua colorscheme files | base, hazy, cloudy |
| Ghostty | Terminal palette files | base, hazy, cloudy |
| Website | JSON for web showcase | palette data |
| Variant | Alpha | Editor BG | Appearance |
|---|---|---|---|
| Base | 100% | Opaque | opaque |
| Hazy | 75% | Transparent | blurred |
| Cloudy | 90% | Transparent | blurred |
For detailed documentation, see the ColorLoom README.
# Install mise (recommended for tool version management)
curl https://mise.run | sh
mise install
# Or ensure you have Node.js, pnpm and Rust managed via mise
mise install
# Install dependencies
mise run install# Install tool versions & deps
mise install && mise run install
# Generate themes
mise run gen
# Start website
mise run dev # Visit http://localhost:4321
# Build everything
mise run build
# Preview website
mise run preview
# Verify Zed extension layout
mise run verifyThe showcase website is deployed to Cloudflare Pages at subliminal-nightfall.hamrah.com.
Automatic Deployment:
Cloudflare Pages automatically deploys when you push to main:
git push origin main
# Cloudflare detects changes and deploys automaticallyThe deployment uses these settings:
- Build command:
pnpm run build:cloudflare - Output directory:
website/dist - Node version: 22
- pnpm version: 10.11.1
Manual Deployment via Wrangler CLI:
pnpm run build:cloudflare
cd website
npx wrangler pages deploy dist --project-name=subliminal-nightfallThe VS Code/Cursor extension automatically publishes to both marketplaces when theme changes are pushed:
Automatic (via GitHub Actions):
- Triggers on changes to
theme.toml,packages/core/**, platform directories, orwebsite/** - Generates themes via Rust CLI and rebuilds website
- Auto-bumps patch versions (Cursor, core if colors changed)
- Computes and tags Zed release versions on Cursor, Zed, or Theme changes
- Publishes VS Code/Cursor extension to Marketplace & Open VSX
- Packages Zed extension contents from
zed/(extension.toml+extension/icon.png+themes/) and attaches to release - The Zed publish job tags
v<version>and runshuacnlee/zed-extension-action - Commits version bumps back to repository
Manual (VS Code / Cursor):
mise install
mise run gen # generate themes
cd cursor
pnpm dlx @vscode/vsce publish # requires VSCE_PAT
pnpm dlx ovsx publish # requires OVSX_PATpnpm dlx downloads and runs a package binary temporarily without a global install, keeping CI and local environments clean and avoiding global bin issues.
Manual (Website deploy):
mise run build:website
# Deploy manually if needed:
cd website
wrangler pages deploy dist --project-name=subliminal-nightfallManual (Zed extension PR):
# Run the publish workflow manually with force_zed enabled.
# The workflow tags the current zed/extension.toml version and opens the Zed Extensions PR.
gh workflow run "Publish Themes and Website" -f force_zed=trueThis repo uses huacnlee/zed-extension-action from the publish workflow to open a PR against the upstream Zed Extensions repo:
- Workflow file:
.github/workflows/publish.yml - Trigger: theme/colorloom changes, or manual
workflow_dispatchwithforce_zed - Inputs:
extension-name:subliminal-nightfallpush-to: set via repo variableZED_EXTENSIONS_FORK(e.g.,yourname/extensionsfork)
- Secrets:
COMMITTER_TOKEN: Personal Access Token withrepo+workflowscopes
When the Zed publish job runs, the action creates or updates the PR to release the extension in Zed.
The upstream zed-industries/extensions entry should include:
[subliminal-nightfall]
submodule = "extensions/subliminal-nightfall"
path = "zed"
version = "<version>"If the generated Zed Extensions PR only bumps version and the submodule SHA, add the path = "zed" line to that PR once.
Setup locations in GitHub UI:
- Set repo variable: Settings → Secrets and variables → Actions → Variables → New variable → Name:
ZED_EXTENSIONS_FORK, Value:mhamrah/extensions(or your fork) - Set secret: Settings → Secrets and variables → Actions → New repository secret → Name:
COMMITTER_TOKEN, Value: your PAT withrepoandworkflowscopes
Primary source of truth: theme.toml.
Rust generator: tools/colorloom.
Workflow:
mise install # install toolchain versions
mise run install # install Node deps
mise run gen # generate all theme artifacts
mise run dev # start website with generated paletteEdit colors / variants (base, hazy, cloudy) in theme.toml, then re-run mise run gen.
Legacy TS palette (packages/core/src/colors.ts) will be aligned to consume theme.toml; prefer editing the TOML.
Color values (2025-11-14):
- Background:
#191724 - Background Alt:
#1f1d2e - Background Elevated:
#26233a - Foreground:
#e0def4 - Foreground Muted:
#a0a0a0 - Foreground Dim:
#7f7f7f - Selection:
#484e5b - Cursor:
#5fb3b3 - Line Highlight:
#2e3239bf
ANSI Base:
- Red:
#bf616a/ Bright#e2848d/ Dim#85434a - Green:
#a9cfa4/ Bright#ccf2c7/ Dim#769072 - Yellow:
#ffe2a9/ Bright#ffffcc/ Dim#b29e76 - Blue:
#6699cc/ Bright#89bcef/ Dim#476b8e - Magenta:
#f1a5ab/ Bright#ffc8ce/ Dim#a87377 - Cyan:
#5fb3b3/ Bright#82d6d6/ Dim#427d7d
Syntax:
- Teal:
#9ccfd8 - Blue Green:
#6699cc - Lavender:
#c4a7e7 - Gray:
#7f7f7f
Release tagging: Zed uses v<cursor-version>; keep versions in cursor/package.json authoritative.
MIT License - see LICENSE file for details.
- Website: subliminal-nightfall.hamrah.com
- Repository: github.com/mhamrah/subliminal-nightfall
- Issues: github.com/mhamrah/subliminal-nightfall/issues
- VS Code Marketplace: Search "Subliminal Nightfall"