You can use this module with the following in your ~/.xmonad/xmonad.hs:
import XMonad.Layout.LayoutBuilder
Then edit your layoutHook by adding something like:
myLayouts = ( (layoutN 1 (relBox 0 0 0.5 1) (Just $ relBox 0 0 1 1) $ simpleTabbed)
$ (layoutAll (relBox 0.5 0 1 1) $ simpleTabbed)
) |||
( (layoutN 1 (relBox (1/3) 0 (1/2) 1) (Just $ relBox 0 0 1 1) $ Tall 0 0 0)
$ (layoutR 0.1 0.5 (relBox (2/3) 0 1 1) Nothing $ Tall 0 0 0)
$ (layoutAll (relBox 0 0 (1/3) 1) $ Tall 0 0 0)
) |||
( (layoutN 1 (absBox (-512-200) 0 512 0) (Just $ relBox 0 0 1 1) $ simpleTabbed)
$ (layoutN 1 (absBox (-200) 0 0 0) Nothing $ simpleTabbed)
$ (layoutAll (absBox 0 0 (-512-200) 0) $ simpleTabbed)
) ||| Full ||| etc...
main = xmonad defaultConfig { layoutHook = myLayouts }
This will produce a layout similar to DragPane, but with the possibility to have multiple windows in the left half
and tabs that show the available windows. It will also produce a layout similar to ThreeColMid and a special layout
created for use with a 80 columns wide Emacs window, its sidebar and a tabbed area for all other windows.
This module can be used to create many different custom layouts, but there are limitations. The primary limitation
can be observed in the second and third example when there are only two columns with windows in them. The leftmost
area is left blank. These blank areas can be avoided by placing the rectangles appropriately.
These examples require XMonad.Layout.Tabbed.
For more detailed instructions on editing the layoutHook see:
XMonad.Doc.Extending
You may wish to add the following keybindings:
, ((modMask x .|. shiftMask, xK_h ), sendMessage $ IncLayoutN (-1))
, ((modMask x .|. shiftMask, xK_l ), sendMessage $ IncLayoutN 1)
For detailed instruction on editing the key binding see:
XMonad.Doc.Extending.
|