v0.12.0
This release reworks the color math behind transitions, makes the set command safe for quick-burst keybind scripts, and ships a proper documentation site.
Added
- Adaptive update intervals.
update_intervalnow accepts"auto"(the new default) and picks the next sleep so every step stays below what the eye can distinguish. Long, slow transitions stay perceptually smooth without burning CPU. setlearned+=and-=for the six temperature and gamma fields, so keybinds likesunsetr set night_temp+=500work without first reading the current value (#48).setalso acceptscurrent_tempandcurrent_gamma, virtual aliases that resolve to whichever field is active in the running instance. Combined with+=or-=, this gives you a single keybind that nudges whichever period you happen to be in. For example,sunsetr set current_temp-=200warms whatever period is active by 200K.- The temperature range now reaches from 1000K to 20000K, so the deep reds at the low end match what hyprsunset can produce.
geotakes a new--target <name>flag to pick the default config or a named preset without going through the interactive picker, so geo can be scripted the same waysetandgetare. For example,sunsetr geo --target workpicks coordinates for theworkpreset without the interactive prompt.preset listnow showsdefaultas the first entry, followed by the named presets.- The new documentation lives at
https://psi4j.github.io/sunsetr/, built fromdocs/with mdBook.
Changed
- Smoothstep replaces the cubic Bezier easing curve for transitions, with a cheaper computation per step.
- Color temperature is now interpolated in mireds with a weighted harmonic mean, which is closer to how the eye sees color temperature change (thanks @aeraglyx) (#46).
- Smooth transitions can be interrupted mid-flight. When the config changes, the screen wakes from sleep, or the system clock jumps, sunsetr stops the current transition and starts a new one from where it left off instead of finishing the old target first.
sunsetr setnow serializes through a lockfile and writes the config atomically, so rapid keybind invocations can no longer trash the file or lose increments.sunsetr setalso emits an instant IPC event for waybar and other status watchers, so values update in the bar as soon as the command runs instead of waiting for the transition to finish.--configworks in any position forrun,restart,preset,get,set, andgeo.stop,test, andstatuswarn and ignore it, since they act on the already-running instance.set,get, andstatusnow accept (and ignore)--debugand--backgroundafter the subcommand, instead of being rejected as unknown flags.--targetvalues are validated, so reserved names and paths containing/or..are rejected with a clear error.- The legacy
~/.config/hypr/sunsetr.tomllocation is no longer read, and sunsetr no longer prompts to pick between the old and new locations. The old file is left in place but ignored.
Fixed
- sRGB gamma correction now uses the correct exponent, so colors through the transition match what was intended (thanks @aeraglyx).
- Resuming from sleep or a system time change now re-applies the current gamma and temperature instead of leaving the screen at whatever the compositor reset to.
- A backward clock jump that landed before today's sunrise no longer leaves sunsetr stuck on yesterday's geo times.
- Editors that save through rename bursts no longer cause sunsetr to drop the active preset and fall back to the default config.
- Mid-transition config changes now emit
state_appliedas soon as the target is reached, instead of waiting up toupdate_intervalseconds. - A reload that does not change any effective state is now acknowledged in the log, so every successful reload is visible.
- The bundled systemd unit gained a
Documentation=field, aWAYLAND_DISPLAYcondition,background.sliceplacement, and an explicit configuration directory (thanks @cardboardcpu) (#29). - Many missing or incorrect timezone entries were added or corrected across the geographic database (thanks @acagastya) (#37).
Packaging
- The
sunsetr-gitAUR package now reports a git-described version in its startup banner (for example,0.11.1.r175.g50e4ec7). Same for the Nix flake build, which now injects the version it computes for the store path into the binary as well.
Upgrading
- Newly written configs default
update_intervalto"auto". Existing configs keep their integer value and continue to work unchanged. Switch to"auto"to get adaptive intervals.
Deprecated
- If you keep a config at
~/.config/hypr/sunsetr.toml, move it to~/.config/sunsetr/sunsetr.toml. The old path is no longer read.