Copyright | (c) Anton Pirogov 2014 |
---|---|
License | BSD3 |
Maintainer | Anton Pirogov <anton.pirogov@gmail.com> |
Stability | unstable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell2010 |
XMonad.Hooks.WallpaperSetter
Description
Log hook which changes the wallpapers depending on visible workspaces.
Synopsis
- wallpaperSetter :: WallpaperConf -> X ()
- data WallpaperConf = WallpaperConf {}
- data Wallpaper
- newtype WallpaperList = WallpaperList [(WorkspaceId, Wallpaper)]
- defWallpaperConf :: WallpaperConf
- defWPNamesJpg :: [WorkspaceId] -> WallpaperList
- defWPNamesPng :: [WorkspaceId] -> WallpaperList
- defWPNames :: [WorkspaceId] -> WallpaperList
Usage
This module requires imagemagick and feh to be installed, as these are utilized for the required image transformations and the actual setting of the wallpaper.
This was especially tested with multi-head setups - if you have two monitors and swap the workspaces, the wallpapers will be swapped too, scaled accordingly and rotated if necessary (e.g. if you are using your monitor rotated but only have wide wallpapers).
Add a log hook like this:
myWorkspaces = ["1:main","2:misc","3","4"] ... main = xmonad $ def { logHook = wallpaperSetter defWallpaperConf { wallpapers = defWPNames myWorkspaces <> WallpaperList [("1:main",WallpaperDir "1")] } } ...
wallpaperSetter :: WallpaperConf -> X () #
Add this to your log hook with the workspace configuration as argument.
data WallpaperConf #
Complete wallpaper configuration passed to the hook
Constructors
WallpaperConf | |
Fields
|
Instances
Default WallpaperConf # | |
Defined in XMonad.Hooks.WallpaperSetter Methods def :: WallpaperConf # | |
Read WallpaperConf # | |
Defined in XMonad.Hooks.WallpaperSetter Methods readsPrec :: Int -> ReadS WallpaperConf # readList :: ReadS [WallpaperConf] # | |
Show WallpaperConf # | |
Defined in XMonad.Hooks.WallpaperSetter Methods showsPrec :: Int -> WallpaperConf -> ShowS # show :: WallpaperConf -> String # showList :: [WallpaperConf] -> ShowS # |
Represents a wallpaper
Constructors
WallpaperFix FilePath | Single, fixed wallpaper |
WallpaperDir FilePath | Random wallpaper from this subdirectory |
newtype WallpaperList #
Constructors
WallpaperList [(WorkspaceId, Wallpaper)] |
Instances
Monoid WallpaperList # | |
Defined in XMonad.Hooks.WallpaperSetter Methods mempty :: WallpaperList # mappend :: WallpaperList -> WallpaperList -> WallpaperList # mconcat :: [WallpaperList] -> WallpaperList # | |
Semigroup WallpaperList # | |
Defined in XMonad.Hooks.WallpaperSetter Methods (<>) :: WallpaperList -> WallpaperList -> WallpaperList # sconcat :: NonEmpty WallpaperList -> WallpaperList # stimes :: Integral b => b -> WallpaperList -> WallpaperList # | |
Read WallpaperList # | |
Defined in XMonad.Hooks.WallpaperSetter Methods readsPrec :: Int -> ReadS WallpaperList # readList :: ReadS [WallpaperList] # | |
Show WallpaperList # | |
Defined in XMonad.Hooks.WallpaperSetter Methods showsPrec :: Int -> WallpaperList -> ShowS # show :: WallpaperList -> String # showList :: [WallpaperList] -> ShowS # |
defWallpaperConf :: WallpaperConf #
default configuration. looks in ~/.wallpapers/ for WORKSPACEID.jpg
defWPNamesJpg :: [WorkspaceId] -> WallpaperList #
Return the default association list (maps name
to name.jpg
, non-alphanumeric characters are omitted)
defWPNamesPng :: [WorkspaceId] -> WallpaperList #
Like defWPNamesJpg
, but map name
to name.png
instead.
defWPNames :: [WorkspaceId] -> WallpaperList #
Deprecated: Use defWPNamesJpg instead
TODO
- implement a kind of image cache like in wallpaperd to remove or at least reduce the lag
- find out how to merge multiple images from stdin to one (-> for caching all pictures in memory)