github psi4j/sunsetr v0.12.0

latest releases: v0.12.2, v0.12.1
4 hours ago

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_interval now 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.
  • set learned += and -= for the six temperature and gamma fields, so keybinds like sunsetr set night_temp+=500 work without first reading the current value (#48).
  • set also accepts current_temp and current_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-=200 warms 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.
  • geo takes 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 way set and get are. For example, sunsetr geo --target work picks coordinates for the work preset without the interactive prompt.
  • preset list now shows default as the first entry, followed by the named presets.
  • The new documentation lives at https://psi4j.github.io/sunsetr/, built from docs/ 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 set now serializes through a lockfile and writes the config atomically, so rapid keybind invocations can no longer trash the file or lose increments.
  • sunsetr set also 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.
  • --config works in any position for run, restart, preset, get, set, and geo. stop, test, and status warn and ignore it, since they act on the already-running instance.
  • set, get, and status now accept (and ignore) --debug and --background after the subcommand, instead of being rejected as unknown flags.
  • --target values are validated, so reserved names and paths containing / or .. are rejected with a clear error.
  • The legacy ~/.config/hypr/sunsetr.toml location 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_applied as soon as the target is reached, instead of waiting up to update_interval seconds.
  • 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, a WAYLAND_DISPLAY condition, background.slice placement, 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-git AUR 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_interval to "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.

Don't miss a new sunsetr release

NewReleases is sending notifications on new releases.