X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=xmonad.hs;h=d4c323a162c12236484828adb40b75316c4ece51;hb=6b16737f1e93f88348a90debb27379aa27811fbc;hp=395d449cffd2c06aac43da9af34a0bed4a1ef643;hpb=d83d1e5f6077259ec3b39631bf8505660e616ac8;p=config%2Fdotfiles.git diff --git a/xmonad.hs b/xmonad.hs index 395d449..d4c323a 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -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