X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=xmonad.hs;h=d4c323a162c12236484828adb40b75316c4ece51;hb=6b16737f1e93f88348a90debb27379aa27811fbc;hp=76f64d5243ac8973555ca00843e98a8a31d3929d;hpb=2b561d0325948cd6a5ce155805a44723f1c6ede9;p=config%2Fdotfiles.git diff --git a/xmonad.hs b/xmonad.hs index 76f64d5..d4c323a 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -1,6 +1,6 @@ -- xmonad configuration file. -- --- Should work fine with xmonad 0.7 and above. +-- Tested with xmonad 0.9, most settings should work fine with xmonad 0.7. -- "hiding" necessary for LayoutCombinators. @@ -108,16 +108,17 @@ nextLayoutIncluding :: [String] -> X () nextLayoutIncluding layouts = do cws <- gets (W.workspace . W.current . windowset) sendMessageWithNoRefresh NextLayout cws - nextLayoutIncluding' layouts + nextLayoutIncluding' layouts 1000 -- nobody has more than 1000 layouts -nextLayoutIncluding' :: [String] -> X () -nextLayoutIncluding' layouts = do +nextLayoutIncluding' :: [String] -> Int -> X () +nextLayoutIncluding' layouts iterations = do cws <- gets (W.workspace . W.current . windowset) - if not $ (description $ W.layout cws) `elem` layouts + -- iterations prevents an endless loop if no valid layout can be found. + if not ((description $ W.layout cws) `elem` layouts) && iterations > 0 -- Skip over excluded layouts. then do sendMessageWithNoRefresh NextLayout cws - nextLayoutIncluding' layouts + nextLayoutIncluding' layouts (iterations - 1) -- Found allowed layout, show it. else refresh