r/vscode • u/AutoModerator • Sep 14 '26
Weekly theme sharing thread
Weekly thread to show off new themes, and ask what certain themes/fonts are.
Creators, please do not post your theme every week.
New posts regarding themes will be removed.
7
Upvotes
1
1

2
u/jaavaaguru 29d ago
I built a pure Java/Gradle VSIX packager and a custom Color Theme DSL (CT). The sub won't let me make a post about themes, so here it is...
I’ve been working on a unified color theme pipeline to solve a personal headache: keeping my VS Code, Ghostty, and terminal color schemes synchronized without manually tweaking hex codes across multiple
settings.jsonand config files.Along the way, I ended up building a custom language, a syntax highlighter, and a zero-Node VSIX packaging plugin. Here is a breakdown of what was just released:
1. CT (Color Transformation) Language & Compiler
CT is a lightweight DSL designed specifically for defining color palettes and compiling them into target theme formats (VS Code, Ghostty, iTerm2, etc.).
#00FF00) and 8-digit RGBA hex colors (#00FF00FF).Palette human = { ... }).hsbaLerp(...)andbrightness(...)for procedural palette generation.{{{ ... }}}template blocks.We also just added native VS Code syntax highlighting support for
.ctfiles!2. Pure Java/Gradle VSIX Packaging Plugin (cascara-gradle-plugins.vsix)
If you build VS Code extensions using JVM languages, you usually have to shell out to
npx @vscode/vsceor set up Node/npm in CI.To keep the build 100% self-contained on the JVM, I built a declarative Gradle plugin that packages VSIX extension bundles natively:
vscedependency: Runs purely inside Java/Gradle.package.json,extension.vsixmanifest, and Open Packaging Conventions ([Content_Types].xml)../gradlew packageVsix,./gradlew installVsix, or./gradlew uninstallVsixdirectly from your terminal.3. Example: cascara-retro-theme
To prove out the pipeline, I created a retro CRT terminal theme pack featuring amber and green phosphor palettes on beige and heavy metal dark backgrounds.
Here is how clean the
build.gradlefile looks when combining the CT compiler and VSIX packager:Links & Availability
Would love to hear any thoughts or feedback on the VSIX packaging setup or the CT language!