xmonad-contrib-0.17.1: Community-maintained extensions for xmonad
Copyright(c) Anton Pirogov 2014
LicenseBSD3
MaintainerAnton Pirogov <anton.pirogov@gmail.com>
Stabilityunstable
Portabilityunportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

XMonad.Hooks.WallpaperSetter

Contents

Description

Log hook which changes the wallpapers depending on visible workspaces.

Synopsis

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

Instances details
Read WallpaperConf # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

Show WallpaperConf # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

Default WallpaperConf # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

Methods

def :: WallpaperConf #

data Wallpaper #

Represents a wallpaper

Constructors

WallpaperFix FilePath

Single, fixed wallpaper

WallpaperDir FilePath

Random wallpaper from this subdirectory

Instances

Instances details
Read Wallpaper # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

Show Wallpaper # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

Eq Wallpaper # 
Instance details

Defined in XMonad.Hooks.WallpaperSetter

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)