Skip to content

Apply changes straight away, a transition command, and background reloads - #19

Merged
CPritch merged 4 commits into
mainfrom
feat/ergonomics
Oct 5, 2026
Merged

CPritch merged 4 commits into
mainfrom
feat/ergonomics

Conversation

@CPritch

@CPritch CPritch commented Oct 5, 2026

Copy link
Copy Markdown
Owner
  • set, slideshow and slideshow --stop tell a running shiftpaperd to reload, by sending it SIGHUP after finding it through /proc, so there's no systemctl --user reload to run. If none is running, they say how to start it.
  • shiftpaper transition [name] [--secs N] shows or sets the transition. The names come from the config's Transition, which now derives clap's ValueEnum, so --help lists each with its description and they tab-complete.
  • Reloads read the config straight away and decode changed wallpapers on background threads, once per image, while the old ones keep animating. Big images no longer freeze the parallax, and outputs already showing the right wallpaper are left alone. New outputs share textures with any output showing the same wallpaper.
  • CI runs the config tests with the clap feature.

set, slideshow and slideshow --stop now send SIGHUP to any shiftpaperd
the user is running, found through /proc, so the change shows straight
away without a separate reload. It's the same signal systemctl --user
reload sends, so it also works when the daemon isn't run by systemd. If
none is running, they say how to start it.
shiftpaper transition shows the current transition and how long it
takes, or sets either and tells a running daemon to pick it up, like
mode does for tracking. The names come straight from the config's
Transition, which now derives clap's ValueEnum, so --help lists each
with its description and they tab-complete. Tests check the command
line names, the config names and the parser all agree.
A reload decoded each output's wallpaper on the main thread, so the
parallax froze for a second or two with a big image, and an image shown
on two monitors was decoded twice. Now the config is read straight away
and each changed wallpaper decodes on a background thread, once however
many outputs show it, while the old ones keep animating. The main loop
starts the transitions when they're all ready.

Outputs already showing the right wallpaper are left alone, so a
settings change like the transition doesn't reload or redraw anything,
and an unchanged slideshow carries on as it was. New outputs share the
textures of any output showing the same wallpaper.
@CPritch
CPritch merged commit 80d0dc6 into main Oct 5, 2026
1 check passed
@CPritch
CPritch deleted the feat/ergonomics branch October 5, 2026 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant