module XMonad.Wallpaper where
import XMonad.Core
import XMonad.Wallpaper.Find
import XMonad.Wallpaper.Expand
import Control.Applicative
import System.Random
setRandomWallpaper :: [String] -> IO ()
setRandomWallpaper [String]
filepaths = do
[String]
rootPaths <- (String -> IO String) -> [String] -> IO [String]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM String -> IO String
expand [String]
filepaths
[String]
candidates <- [String] -> IO [String]
findImages [String]
rootPaths
String
wallpaper <- ([String] -> Int -> String
forall a. [a] -> Int -> a
(!!) [String]
candidates) (Int -> String) -> IO Int -> IO String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (StdGen -> (Int, StdGen)) -> IO Int
forall (m :: * -> *) a. MonadIO m => (StdGen -> (a, StdGen)) -> m a
getStdRandom ((Int, Int) -> StdGen -> (Int, StdGen)
forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
randomR (Int
0, [String] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [String]
candidates Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1))
String -> IO ()
forall (m :: * -> *). MonadIO m => String -> m ()
spawn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"feh --bg-scale " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
wallpaper