
Quoting Jacek Generowicz
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", "%date%%StdinReader%"] 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. ~d