(simple-service 'swww-daemon-service home-shepherd-service-type (list (shepherd-service (provision '(swww-daemon)) (start #~(make-forkexec-constructor (list #$(file-append (@ (gnu packages wm) swww) "/bin/swww-daemon")))) (stop #~(make-kill-destructor)) (documentation "Run @acronym{swww, a Solution to your Wayland Wallpaper Woes}, a wallpaper daemon.")))) (simple-service 'swww-background-rotation-service home-shepherd-service-type (list (let* ((backgrounds '(("https://w.wallhaven.cc/full/e8/wallhaven-e8717l.jpg" . "09dks9hc02jqa1hqj0lrxkg8pix9cwi932vvx35draq4pdqxidci") ("https://w.wallhaven.cc/full/qz/wallhaven-qzdo3r.jpg" . "11syj6hdradb62l6qqfdlyqfg2ml5kkwl7y5p55f8x8bxkq18g6x") ;; ("https://pbs.twimg.com/media/G1vF8RlaAAI81eP.jpg?name=orig" ;; . ;; "1jw28hw3ysfwwyjc2x15fbwignrlzkxz69g2mhhz4a55k1khn3rd") ("https://w.wallhaven.cc/full/9o/wallhaven-9ode5x.jpg" . "08bfp5nf82yp4bkbvgmvczrbavnifk54n2lf639gzrxbq9gibrfv"))) (_ (set! *random-state* (random-state-from-platform))) ;seed the random state (random-index (random (length backgrounds))) (current-candidate (list-ref backgrounds random-index)) (url (car current-candidate)) (hash (cdr current-candidate)) (background (origin (method url-fetch) (uri url) (sha256 (base32 hash))))) (shepherd-timer '(swww-background-rotation) #~(cron-string->calendar-event "0 * * * *") ;hourly job #~(#$(file-append (@ (gnu packages wm) swww) "/bin/swww") "img" #$background) #:requirement '(swww-daemon)))))