diff options
Diffstat (limited to 'XMonad/Core.hs')
-rw-r--r-- | XMonad/Core.hs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/XMonad/Core.hs b/XMonad/Core.hs index 20d7258..e60a01a 100644 --- a/XMonad/Core.hs +++ b/XMonad/Core.hs @@ -48,7 +48,7 @@ import System.Posix.Types (ProcessID) import System.Process import System.Directory import System.Exit -import Graphics.X11.Xlib +import Graphics.X11.Xlib hiding (Screen) import Graphics.X11.Xlib.Extras (Event) import Data.Typeable import Data.List ((\\)) @@ -424,10 +424,12 @@ xfork x = io . forkProcess . finally nullStdin $ do runOnWorkspaces :: (WindowSpace -> X WindowSpace) -> X () runOnWorkspaces job = do ws <- gets windowset - h <- mapM job $ hidden ws - c:v <- mapM (\s -> (\w -> s { workspace = w}) <$> job (workspace s)) - $ current ws : visible ws - modify $ \s -> s { windowset = ws { current = c, visible = v, hidden = h } } + c:v <- mapM runOnScreen $ current ws : visible ws + modify $ \s -> s { windowset = ws { current = c, visible = v } } + where + runOnScreen scr@Screen { screenWorkspace = w, screenHidden = ws } = do + w':ws' <- mapM job (w:ws) + return scr { screenWorkspace = w', screenHidden = ws' } -- | Return the path to @~\/.xmonad@. getXMonadDir :: MonadIO m => m String |