[xmonad] Grid layout eats other layouts

Roman Cheplyaka roma at ro-che.info
Sun Apr 27 11:38:03 EDT 2008


* Yitzchak Gale <gale at sefer.org> [2008-04-27 17:45:57+0300]
> Using xmonad 0.7 and KDE 3.5 with the xmonad.hs
> from http://haskell.org/haskellwiki/Xmonad/Using_xmonad_in_KDE
> 
> I want to add Grid to the default list of layouts.
> When I do:
> 
> 3a4
> > import XMonad.Layout.Grid
> 10c11
> <  , layoutHook            = avoidStruts $ layoutHook defaultConfig
> ---
> >  , layoutHook            = avoidStruts $ layoutHook defaultConfig ||| Grid
> 
> I only get Tall and Grid. The last two layouts from
> defaultConfig - Mirror Tall and Full - disappear,
> seemingly "eaten" by Grid.
> 
> If I specify the entire layout list manually:
> 
> 3a4
> > import XMonad.Layout.Grid
> 10c11,12
> <  , layoutHook            = avoidStruts $ layoutHook defaultConfig
> ---
> >  , layoutHook            = avoidStruts $ let t = Tall 1 (3/100) (1/2) in
> >                            t ||| Mirror t ||| Full ||| Grid
> 
> I get all four layouts as expected.
> 
> Any ideas why?
> 
> Thanks,
> Yitz

It's because code which works with Choose data type expects the tree to
grow to the left. If you write
  layoutHook            = avoidStruts $ Grid ||| layoutHook defaultConfig
it will work. This is undocumented (afaik) and should be considered as a
bug.
By the way, NewSelect combinator from LayoutCombinators does not have
this issue, so one more reason to merge it to the core.

-- 
Roman I. Cheplyaka (aka Feuerbach @ IRC)


More information about the xmonad mailing list