monotheme

One theme — a full VSCode/shiki theme — projected into every tool, switched with one command that live-reloads everything.

Get started View on GitHub
No per-tool hand-porting. One source of truth.

01How it works

The fat format (a full VSCode theme) stays canonical. monotheme projects it down to 16-color ANSI for simple tools and passes it through at full fidelity for smart ones — so one file fans out into your whole environment.

terminal TUI / shell editors agents syntax export system

02Compatible tools

Every target detects whether the tool is present and no-ops if not, so you only theme what you have. Adding another is a small adapter away.

Terminals

ghosttykittyalacrittyWezTermWarpany 16-ANSI terminal

TUI / shell

tmuxbtopfzflazygityazi

Editors

VSCodeCursorZedNeovimSublime Text

chrome + TextMate syntax parity

Agents / dev

opencodeClaude Codehunkherdr

Syntax export

.tmThemeshiki JSONbase16

bat / Sublime / any base16 tool

System (macOS)

accent colorwindow bordersRaycast

03Install

Requires Bun. Clone, install, point each tool's config at the slot once — future switches are automatic.

Set it up

# clone + install
git clone https://github.com/eduwass/monotheme
cd monotheme
bun install

# expose the `theme` command on your PATH
bun link

# list available themes
theme list

Switch themes

# project a theme everywhere + live-reload
theme set shades-of-purple
theme set github-light
theme set catppuccin-mocha

# the active theme
theme current

# follow the system light/dark mode (macOS)
theme pair set github-light tokyo-night
theme watch install

Full launcher + per-tool wiring: docs/INSTALL.md.

04Contribute

The highest-leverage contribution is a new tool adapter — theme one tool and everyone gets it for free. Adapters are small, pure functions; syntax colors are verified token-for-token against shiki.

Add a tool adapter

A to*(theme) function returns your tool's format; a target writes it and reloads. Most adapters are 20–40 lines. Personal adapters can live in ~/.config/monotheme/targets/ — no fork needed.

Adapter guide

Ground rules

Pure adapters, no new deps, detect-and-no-op when a tool is absent, and verify syntax against the shiki oracle.

Contributing