Six high-separation dark themes for Visual Studio, VS Code, Cursor, Rider, and PyCharm, designed for fast scanning. Each gives the five C# type kinds — class, interface, record, struct, and enum — a color of its own: Voltage, Ultraviolet, Reactor, Arcade, Signal, and Nightdive.
All five editors are painted from one palette table, scripts/focuspalette.py. Every theme file in this repository is generated from it, and no colour is written by hand anywhere else — a test enforces that. A hue changes in one place and the whole family follows.
| Editor | Artifact | Built by |
|---|---|---|
| Visual Studio 17.9–18.x (AMD64, ARM64) | FocusThemes/Themes/*.vstheme in a VSIX |
gen-themes.py |
| VS Code, Cursor | vscode/ extension |
gen-vscode.py |
| Rider, PyCharm, any IntelliJ IDE | jetbrains/schemes/*.icls and a plugin |
gen-jetbrains.py |
Per-theme palette tables and the color-role reference live in the project wiki.
Open Extensions > Manage Extensions in Visual Studio, search for the extension name, and choose Download.
Download the .vsix from the latest GitHub Release, close Visual Studio, and run the package. Verify the downloaded file against SHA256SUMS.txt before installation.
cd vscode && npx --yes @vscode/vsce packageThen Extensions > … > Install from VSIX, and pick a theme with Preferences: Color Theme. Cursor is a VS Code fork and installs the same package.
For the editor only, no plugin and no build: Settings > Editor > Color Scheme > ⚙ > Import Scheme, and choose a file from jetbrains/schemes/.
To colour the IDE frame as well, build the plugin and install it from disk:
cd jetbrains/plugin && gradle buildPluginEvery theme file is generated output. Edit the palette, never a theme:
python scripts/gen-all.pyThat rewrites all three families from scripts/focuspalette.py and prints a contrast report for each palette. CI regenerates and diffs, so a hand-edited theme fails the build.
dotnet restore FocusThemes.slnx
dotnet build FocusThemes.slnx -c Release --no-restore
./scripts/Test.ps1Sample/AllTokens.cs contains a compact catalogue of C# classifications for visually checking every theme.
Every syntax hue clears WCAG AA (4.5:1) against its own background; gen-all.py reports the ratio for each and exits non-zero if one drops below its floor. Comments, the gutter, and regex pattern text are held to 3:1 instead — deliberately, so commentary recedes rather than competing with code.
All three extensions release under one version and one tag.
-
Set the version everywhere at once:
pwsh -File scripts/Set-Version.ps1 2.1.0
-
Merge the version change into
mainand wait for CI. -
Create and push the matching tag, for example
v2.1.0. -
The workflow validates the tag against all three manifests, builds and validates every package, then creates the GitHub Release carrying all of them.
-
Approve each marketplace environment you want to publish to. They are independent:
visual-studio-marketplace,vscode-marketplace,open-vsx(the registry Cursor and VSCodium read), andjetbrains-marketplace.
Repository setup required before the first release — one environment and one token per marketplace — is documented in .github/RELEASING.md.
These themes are local color themes and editor classification styles only. They do not collect telemetry, transmit data, or connect to remote services.