editor
Slatewave for JetBrains
A full UI theme plus editor scheme for every IntelliJ-based IDE.
- Stars
- ★ 1
- Latest release
- 0.0.5 · 2 months ago
- Last commit
- 3 weeks ago
/**
* Build-time GitHub metadata fetchers.
*
* Public-repo data only. Unauthenticated requests are rate-limited to
* 60/hour per IP; set GITHUB_TOKEN in .env (or the CI environment) to
* raise that to 5000/hour.
*
* Results are cached to `node_modules/.cache/slatewave-github/` with a
* 30-minute TTL so dev hot-reloads don't burn API quota.
*/
import { mkdir, readFile, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
const CACHE_DIR = join(process.cwd(), 'node_modules', '.cache', 'slatewave-github');
const TTL_MS = 30 * 60 * 1000;
export interface RepoMeta {
stars: number;
pushedAt: string;
defaultBranch: string;
openIssues: number;
latestRelease: Release | null;
}
export interface Release {
tag: string;
name: string;
publishedAt: string;
url: string;
body: string;
isPrerelease: boolean;
}
const memory = new Map<string, Promise<unknown>>();
function cacheKey(parts: string[]): string {
return parts.join('__').replace(/[^a-zA-Z0-9_]/g, '_');
}
async function readCache<T>(key: string): Promise<T | null> {
try {
const raw = await readFile(join(CACHE_DIR, `${key}.json`), 'utf8');
const parsed = JSON.parse(raw) as { data: T; at: number };
if (Date.now() - parsed.at < TTL_MS) return parsed.data;
} catch {
/* no cache yet */
}
return null;
}About this theme
Both halves of a JetBrains theme — slatewave.theme.json for UI chrome and Slatewave.xml for the editor scheme — bundled as one plugin. Works across GoLand, WebStorm, IntelliJ IDEA, PyCharm, RubyMine, PhpStorm, CLion, RustRover, DataGrip, Rider, and Android Studio.
Slatewave for JetBrains ships the UI theme and editor scheme as a single plugin — selecting Slatewave as the theme auto-switches the editor scheme too. The terminal ANSI palette is wired to the oh-my-posh prompt’s segment colors, so the integrated terminal and any outside terminal render identically.
Syntax coverage includes Go, TypeScript/JavaScript, JSX/TSX, CSS / SCSS / LESS, HTML / XML, JSON, YAML, Markdown, Python, Bash, Docker, and SQL, with tuned Go-specific accents (struct tags in amber, package and imports in teal, receivers in purple) and semantic token support across every other language.
Developing locally
To preview palette tweaks without rebuilding and re-installing the plugin each time, run a sandbox IDE with the plugin preloaded:
JAVA_HOME=/Applications/GoLand.app/Contents/jbr/Contents/Home ./gradlew runIde
Edits to slatewave.theme.json or Slatewave.xml apply on the next
sandbox launch. Swap GoLand.app for any JetBrains IDE on disk.
Install
Don't have the CLI yet? Install the Slatewave CLI →
-
Slatewave CLI
Install with the Slatewave family CLI — one command, every theme.
slatewave install jetbrains -
Marketplace
Open ↗Install directly from the JetBrains Marketplace inside any JetBrains IDE.
- Settings → Plugins → Marketplace
- Search "Slatewave"
- Install, then Settings → Appearance & Behavior → Appearance → Theme → Slatewave
-
Build from source
Build a local .zip and install it from disk. Gradle needs JDK ≥ 17 — the JBR bundled with any JetBrains IDE works.
- JAVA_HOME=/Applications/GoLand.app/Contents/jbr/Contents/Home ./gradlew buildPlugin
- Locate build/distributions/slatewave-0.0.1.zip
- Settings → Plugins → ⚙ → Install Plugin from Disk… → pick the .zip