I wrote slidle when xscreensaver stopped being able to do what I needed: all I want for our kitchen-wall display is a cycling set of vacation pictures, displayed full-frame, letterboxed if necessary, with instant transitions between them. No special effects, panning, zooming, etc. Just bring up the current image when the keyboard/mouse have been idle for a few minutes, and switch between the images instantly when it's time.
slidle is half the solution: it brings up (and later dismisses) a generic image viewer, configured to show a single image name, at just the right times. The image viewer must be able to notice when the image being displayed has changed, and update its display. Many image viewers can do this. feh and sxiv are two that I have used successfully. With that mechanism in place, having a rotating display is a simple matter of having a separate script (the other half of the solution) copy each displayable image into place, once at a time. 1 They can be copied from elsewhere on the same machine, or perhaps remotely, from a server that holds the pictures. Neither of those viewers seems to care about the image filename's suffix -- they derive the image type by looking at the contents. So (in my limited testing) you can copy any type of image to a file named, say, "saverimage", and the viewer will do the right thing.
slidle runs as a daemon; there are just a few ways to control it. Below, the first command variant starts the daemon. The others modify its behavior.
slidle [idletime MINUTES ]
Start daemon, and optionally set user idle time.
Default idle time is 4 minutes.
or slidle activate
Tell slideshow to activate now, regardless of idleness.
or slidle holdoff MINUTES
Keep slideshow from activating for a while.
or slidle kill
Tell the slideshow to cease completely.
Anyway, slidle is a simple program (just 250 lines of bash), but combines some interesting tools (inotify_wait, xinput, xprintidle), so I thought I'd share it.
Footnotes
-
I realize image viewers like feh and sxiv have a "slideshow mode" of their own, and using that from within "slidle" might work just fine, with the right command line arguments. My images are stored on a different machine than the one where slidle runs, so copying over an image at a time works well for me. ↩