package main import ( "fmt" "log" "time" "github.com/xyproto/wallutils" ) func slideshow(ch <-chan string) { dir := <-ch ticker := time.NewTicker(time.Duration(config.Duration) * time.Second) go func() { for { err := setRandomWallpaper(dir) if err != nil { fmt.Printf("Failed to set random wallpaper from directory %v.", dir) panic(err) } select { case dir = <-ch: log.Println("directory set!") continue case <-ticker.C: continue } } }() } func setRandomWallpaper(dir string) error { img, err := pickRandomImage(dir) if err != nil { return err } return wallutils.SetWallpaperCustom(img, "fit", false) }