diff options
Diffstat (limited to 'XMonad')
-rw-r--r-- | XMonad/Actions/DynamicWorkspaces.hs | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/XMonad/Actions/DynamicWorkspaces.hs b/XMonad/Actions/DynamicWorkspaces.hs index 032f012..c9409ad 100644 --- a/XMonad/Actions/DynamicWorkspaces.hs +++ b/XMonad/Actions/DynamicWorkspaces.hs @@ -124,14 +124,11 @@ addHiddenWorkspace newtag = -- | Remove the current workspace if it contains no windows. removeEmptyWorkspace :: X () -removeEmptyWorkspace = do t <- (tag.workspace.current) `fmap` gets windowset - removeEmptyWorkspaceByTag t +removeEmptyWorkspace = gets (currentTag . windowset) >>= removeEmptyWorkspaceByTag -- | Remove the current workspace. removeWorkspace :: X () -removeWorkspace = do t <- (tag.workspace.current) `fmap` gets windowset - removeWorkspaceByTag t - +removeWorkspace = gets (currentTag . windowset) >>= removeWorkspaceByTag -- | Remove workspace with specific tag if it contains no windows. Only works -- on the current or the last workspace. @@ -140,13 +137,13 @@ removeEmptyWorkspaceByTag t = whenX (isEmpty t) $ removeWorkspaceByTag t -- | Remove workspace with specific tag. Only works on the current or the last workspace. removeWorkspaceByTag :: String -> X () -removeWorkspaceByTag torem = do s <- gets windowset - case s of - StackSet { current = Screen { workspace = cur } - , hidden = (w:_) } - -> do when (torem==tag cur) $ windows $ view $ tag w - windows $ removeWorkspace' torem - _ -> return () +removeWorkspaceByTag torem = do + s <- gets windowset + case s of + StackSet { current = Screen { workspace = cur }, hidden = (w:_) } -> do + when (torem==tag cur) $ windows $ view $ tag w + windows $ removeWorkspace' torem + _ -> return () -- | Remove the current workspace after an operation if it is empty and hidden. -- Can be used to remove a workspace if it is empty when leaving it. The @@ -158,16 +155,16 @@ removeEmptyWorkspaceAfter = removeEmptyWorkspaceAfterExcept [] -- | Like 'removeEmptyWorkspaceAfter' but use a list of sticky workspaces, -- whose entries will never be removed. removeEmptyWorkspaceAfterExcept :: [String] -> X () -> X () -removeEmptyWorkspaceAfterExcept sticky f = do before <- getTag - f - after <- getTag - when (before/=after && before `notElem` sticky) $ removeEmptyWorkspaceByTag before - where getTag = (tag.workspace.current) `fmap` gets windowset +removeEmptyWorkspaceAfterExcept sticky f = do + before <- gets (currentTag . windowset) + f + after <- gets (currentTag . windowset) + when (before/=after && before `notElem` sticky) $ removeEmptyWorkspaceByTag before isEmpty :: String -> X Bool isEmpty t = do wsl <- gets $ workspaces . windowset let mws = find (\ws -> tag ws == t) wsl - return $ maybe True (isNothing.stack) mws + return $ maybe True (isNothing . stack) mws addHiddenWorkspace' :: i -> l -> StackSet i l a sid sd -> StackSet i l a sid sd addHiddenWorkspace' newtag l s@(StackSet { hidden = ws }) = s { hidden = Workspace newtag l Nothing:ws } |