From: Simon Ruderich Date: Mon, 13 Jun 2011 14:02:36 +0000 (+0200) Subject: xmonad.hs: Fix nextLayoutIncluding changing layout on all workspaces. X-Git-Url: https://ruderich.org/simon/gitweb/?p=config%2Fdotfiles.git;a=commitdiff_plain;h=a64902a7e49c498fbe33619b12ba3ba41b7c80a2 xmonad.hs: Fix nextLayoutIncluding changing layout on all workspaces. --- diff --git a/xmonad.hs b/xmonad.hs index d8f4d2d..04257cb 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -90,17 +90,28 @@ myManageHook = composeOne , return True -?> doF W.focusDown ] --- Switch to next layout with descriptions in desc, other layouts are skipped. --- This allows switching to some layouts with mappings but excluding them from +-- Switch to next layout, but skip all layouts not in layouts argument. This +-- allows switching to some layouts with mappings but excluding them from -- meta-space (which gets mapped to this function). Thanks to aavogt in --- #xmonad on Freenode for this function (2010-06-13 12:45 CEST), modified to --- take list of layouts to switch to, not layouts to exclude. -nextLayoutIncluding descs = - do broadcastMessage NextLayout - d <- gets (description . W.layout . W.workspace . W.current . windowset) - if d `elem` descs - then refresh - else nextLayoutIncluding descs +-- #xmonad on Freenode for this function (2011-06-13 12:45 CEST) and +-- rootzlevel in #xmonad on Freenode for fixes (2011-06-13 15:20 CEST), +-- modified to take list of layouts to switch to, not layouts to exclude. +nextLayoutIncluding :: [String] -> X () +nextLayoutIncluding layouts = do + cws <- gets (W.workspace . W.current . windowset) + sendMessageWithNoRefresh NextLayout cws + nextLayoutIncluding' layouts + +nextLayoutIncluding' :: [String] -> X () +nextLayoutIncluding' layouts = do + cws <- gets (W.workspace . W.current . windowset) + if not $ (description $ W.layout cws) `elem` layouts + -- Skip over excluded layouts. + then do + sendMessageWithNoRefresh NextLayout cws + nextLayoutIncluding' layouts + -- Found allowed layout, show it. + else refresh myKeys = [ -- Switch to next layout, but only use the listed layouts.