
I've now been using xmonad inside of gnome for about a week... slowly removing the gnome aspects of everything... in the meantime I have one annoyance. I have a dual monitor setup where I wanted to have sep. workspaces for each monitor. That wasn't a problem to get setup... but the 2nd monitor, I want to split the layout horizontally rather than vertically... I can accomplish this with: layoutHook = reflectHoriz $ Tall 1 (3/100) (1/2) But... I don't know enough Haskell to combine that together with my existing gnome friendly layout hook. A this is the code you want plus, go look at this bit of haskell to learn why it works would be greatly appreciated. Current hook is: layoutHook = smartBorders (layoutHook gnomeConfig) Entire current xmonad.hs is: import XMonad import XMonad.Actions.UpdatePointer import XMonad.Config.Gnome import XMonad.Hooks.DynamicLog import XMonad.Layout.IndependentScreens import XMonad.Layout.NoBorders import qualified XMonad.StackSet as W import XMonad.Util.EZConfig (additionalKeys) conf = gnomeConfig { workspaces = myWorkspaces , modMask = mod4Mask , terminal = "gnome-terminal" , layoutHook = smartBorders (layoutHook gnomeConfig) , logHook = dynamicLog >> updatePointer (Relative 0.5 0.5) } `additionalKeys` myKeys myWorkspaces = withScreens 2 ["1", "2", "3", "4", "5", "6", "7", "8", "9"] ` myKeys = [ -- workspaces are distinct by screen ((m .|. mod4Mask, k), windows $ onCurrentScreen f i) | (i, k) <- zip (workspaces' conf) [xK_1 .. xK_9] , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] ] ++ [ -- swap screen order ((m .|. mod4Mask, key), screenWorkspace sc >>= flip whenJust (windows . f)) | (key, sc) <- zip [xK_w, xK_e, xK_r] [1,0,2] , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] ++ [ -- rebind meta-p to dmenu ((mod4Mask, xK_p), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") ] main = xmonad conf