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
Or build from source:
Usage
# Generate from a seed color
# Generate from a wallpaper
# Run the default sync profile from ~/.config/chromasync/config.toml
# Run a named sync profile
# Install a custom target and record where its artifacts should be written
# Preview palette and tokens without writing files
# Export tokens as JSON
# Batch multiple jobs from a manifest
Output is written to ./chromasync by default.
Sync
Use chromasync sync when you want Chromasync to read a saved profile from
~/.config/chromasync/config.toml and write each target to its configured
destination. A profile can use a fixed seed, a fixed wallpaper image, or a
command that returns the current wallpaper path:
[[]]
= "default"
= "qs -c noctalia-shell ipc call wallpaper get"
= "materialish"
= "auto"
= ["kitty"]
= "industrial"
[[]]
= "kitty"
= "~/.config/kitty"
= true
[[]]
= "reload-kitty"
= "target:kitty:done"
= ["config:default"]
= "kitty @ load-config"
Run it with:
mode = "auto" follows the desktop color-scheme when it can be detected, and
falls back to dark mode.
Hooks run after a successful chromasync sync write. Use targets:done to run
after every target is generated, or target:<name>:done for a specific target.
Hook commands run from the directory containing config.toml; a failing hook
makes sync exit with an error after artifacts have been written.
Installing Targets
Built-in targets can be used by name. Declarative target specs, such as the
examples under examples/targets/, can be installed into
the user config and assigned an output directory:
This copies the target TOML into ~/.config/chromasync/targets/ and records a
matching [[targets]] entry in ~/.config/chromasync/config.toml. Add
--overwrite to replace an existing installed target and mark its generated
artifacts as overwrite-safe during generation.
Once installed, the target can be referenced by name:
Built-in Templates & Targets
| Templates | Targets |
|---|---|
minimal, brutalist, terminal, materialish |
kitty, alacritty, ghostty, hyprland, hyprland-lua, zed |
Additional targets (GTK, CSS, Waybar, Foot, Editor) are
available as declarative TOML specs under
examples/targets/.
Documentation
An mdBook is included under book/:
To regenerate book source from CLI metadata:
Development
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.