[xmonad] One status bar process, visible on N screens

wagnerdm at seas.upenn.edu wagnerdm at seas.upenn.edu
Tue Jan 17 03:01:52 CET 2012

Quoting Jacek Generowicz <jacek.generowicz at cern.ch>:

> How about getting XMonad to figure out how many screens there are, and
> to start one on each screen? Maybe even removing/adding them as
> screens are (dis-)connected?

Here is a snippet from my xmonad.hs (with a few complicating factors removed):

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Layout.IndependentScreens
import XMonad.Util.Run

main = do
     nScreens <- countScreens
     hs       <- mapM (spawnPipe . xmobarCommand) [0 .. nScreens-1]
     xmonad $ defaultConfig {
         logHook = mapM_ dynamicLogWithPP $ zipWith pp hs [0..nScreens]

xmobarCommand (S s) = unwords ["xmobar", "-x", show s, "-t",  
pp h s = marshallPP s defaultPP { ppOutput = hPutStrLn h }

You will probably not need marshallPP if you are not using  
IndependentScreens. Still, perhaps you will find this starting point  
useful for your own experimentation.

More information about the xmonad mailing list