Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

TemplatesTargets
minimal, brutalist, terminal, materialishkitty, 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.