Skip to content

Repository files navigation

Focus Themes

Release Downloads CI License

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.

Installation

Visual Studio Marketplace

Focus Themes

Open Extensions > Manage Extensions in Visual Studio, search for the extension name, and choose Download.

GitHub Releases

Download the .vsix from the latest GitHub Release, close Visual Studio, and run the package. Verify the downloaded file against SHA256SUMS.txt before installation.

VS Code and Cursor

cd vscode && npx --yes @vscode/vsce package

Then Extensions > … > Install from VSIX, and pick a theme with Preferences: Color Theme. Cursor is a VS Code fork and installs the same package.

Rider and PyCharm

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 buildPlugin

Development

Every theme file is generated output. Edit the palette, never a theme:

python scripts/gen-all.py

That 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.ps1

Sample/AllTokens.cs contains a compact catalogue of C# classifications for visually checking every theme.

Accessibility

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.

Release process

All three extensions release under one version and one tag.

  1. Set the version everywhere at once:

    pwsh -File scripts/Set-Version.ps1 2.1.0
  2. Merge the version change into main and wait for CI.

  3. Create and push the matching tag, for example v2.1.0.

  4. The workflow validates the tag against all three manifests, builds and validates every package, then creates the GitHub Release carrying all of them.

  5. 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), and jetbrains-marketplace.

Repository setup required before the first release — one environment and one token per marketplace — is documented in .github/RELEASING.md.

Privacy

These themes are local color themes and editor classification styles only. They do not collect telemetry, transmit data, or connect to remote services.

License

MIT

About

GraphiteTheme and FocusThemes: polished light and dark color themes for Visual Studio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages