Seamless
A quiet, single-surface VS Code theme — plus a live lightness dial. The whole viewport shares one background: editor, sidebar, tabs, panel, terminal, status bar, with dividing lines removed entirely. Syntax highlighting is a soft rainbow: fourteen distinct hues at uniform low saturation.
Variants
Four points on one contrast spectrum, all sharing a single hue/saturation profile — only lightness moves:
- Seamless Dark — deep charcoal (
#16181d)
- Seamless Dark Fog — hazy graphite, softer contrast (
#2e313a)
- Seamless Light Fog — muted pewter, softer contrast (
#dedfe4)
- Seamless Light — soft off-white (
#f2f3f6)
The dial
Because the variants are one lightness dial, the extension makes it literal: a 30-step progressive dial between them, with the four themes as anchors and every in-between step synthesized live (no reload).
- Status bar item (
◐ NN%) — click to open the dial; arrow keys preview live, Enter commits, Esc restores
Ctrl+Alt+= / Ctrl+Alt+- (Cmd on macOS) — step brighter / darker
- Seamless: Snap to Nearest Theme — return to a clean anchor
Between anchors the dial writes interpolated colors into workbench.colorCustomizations (scoped to Seamless themes only); landing on an anchor removes every override. The 50% zone is deliberately untamed — mid-gray is where themes go to break, and you're allowed to visit.
Design principles
- One background. Every workbench region uses the same color. No boxes.
- No seams. Borders between regions are fully transparent; scrollbar, sticky-scroll, and part shadows are removed. Resize affordances materialize under the cursor (sash hover) instead of living on screen.
- Neutral chrome. Indicators (active tab, activity bar, panel title, badges) are muted gray; color appears only where it means something — cursor, buttons, links, diff/git state.
- Soft rainbow. Fourteen low-saturation hues across finely sliced scopes: control-flow vs declarations, functions vs built-ins, numbers vs booleans vs constants…
- Depth only where it floats. Popovers sit one shade above the surface with a soft shadow.
Note: the extension sets "workbench.shadows": false as a default — the shadows VS Code draws around workbench parts aren't themable, and the seamless look requires removing them. This default applies while the extension is installed.
Install
From a packaged .vsix (works on Windows, macOS, Linux):
npx @vscode/vsce package
code --install-extension seamless-theme-<version>.vsix
Then Preferences: Color Theme → pick a Seamless variant.
Development
Don't edit themes/*.json — they are generated. All palettes live in build.js: four surface sets and two 14-hue accent sets. Edit those, then:
node build.js
extension.js (the dial) imports the same palettes and generator functions, so theme and dial can never drift apart. Press F5 with this folder open to preview in an Extension Development Host. See docs/PROJECT-NOTES.md for architecture notes and hard-won VS Code internals discoveries.