Chromasync
A Rust CLI that generates consistent theme files for desktop apps and editors from a seed color or wallpaper image.
Seed/Wallpaper → OKLCH Palette → Template Rules → Theme Files
Install
cargo install --locked --path crates/chromasync-cli
Or build from source:
cargo build --release -p chromasync-cli
Usage
# Generate from a seed color
chromasync generate --seed "#ff6b6b" --template brutalist --mode dark \
--targets kitty,alacritty,examples/targets/gtk.toml
# Generate from a wallpaper
chromasync wallpaper --image wallpaper.png --template materialish --mode light \
--targets kitty,examples/targets/css.toml
# Preview palette and tokens without writing files
chromasync preview --seed "#4ecdc4" --template minimal --mode light
# Export tokens as JSON
chromasync tokens --seed "#7c3aed" --template terminal --mode dark --format json
# Batch multiple jobs from a manifest
chromasync batch --file jobs.toml
Output is written to ./chromasync by default.
Built-in Templates & Targets
| Templates | Targets |
|---|---|
minimal, brutalist, terminal, materialish | kitty, alacritty |
Additional targets (GTK, Hyprland, CSS, Waybar, Foot, Ghostty, Editor) are available as declarative TOML specs under examples/targets/. Custom targets can be added to ~/.config/chromasync/targets/.
chromasync templates # list available templates
chromasync targets # list available targets
Documentation
An mdBook is included under book/:
mdbook serve --open # preview locally
To regenerate book source from CLI metadata:
cargo run -p chromasync-docs -- generate
Development
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace
cargo run -p chromasync-docs -- generate --check
Contributing
Pull requests from first-time or otherwise unvouched contributors are automatically closed until a maintainer vouches for the author. This is in place to reduce spammy or low-signal PRs.
If you want to contribute and are not yet vouched, open an issue describing the change you want to make or the area you want to work on. A maintainer can then comment vouch, vouch @user, lgtm, or lgtm @user on the issue or PR to add you to the trusted contributor list.
Maintainers can also comment unvouch or denounce to remove trust or explicitly block an account when needed. The trust list lives in .github/VOUCHED.td.
See the Packaging guide for release and packaging details.