diff options
Diffstat (limited to 'src/Rahm/Desktop/Desktop.hs')
| -rw-r--r-- | src/Rahm/Desktop/Desktop.hs | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/Rahm/Desktop/Desktop.hs b/src/Rahm/Desktop/Desktop.hs index 053b330..5466fd1 100644 --- a/src/Rahm/Desktop/Desktop.hs +++ b/src/Rahm/Desktop/Desktop.hs @@ -4,22 +4,24 @@ module Rahm.Desktop.Desktop where -- state of the current screen -> workspace and thus restore it. -- import XMonad.Operations -import Data.Maybe (fromMaybe) + import Control.Monad (forM_) -import XMonad (X(..)) -import qualified XMonad.StackSet as W -import qualified XMonad as X +import Data.Default import Data.Map (Map) import qualified Data.Map as Map -import Data.Default +import Data.Maybe (fromMaybe) +import XMonad (X (..)) +import qualified XMonad as X +import qualified XMonad.StackSet as W import qualified XMonad.Util.ExtensibleState as XS newtype Desktop si wi = Desktop (Map si wi) deriving (Read, Show) -newtype Desktops = Desktops { - theaters :: Map String (Desktop X.ScreenId X.WorkspaceId) -} deriving (Read, Show) +newtype Desktops = Desktops + { theaters :: Map String (Desktop X.ScreenId X.WorkspaceId) + } + deriving (Read, Show) instance Default Desktops where def = Desktops mempty @@ -32,9 +34,11 @@ saveCurrentDesktop :: String -> X () saveCurrentDesktop name = X.withWindowSet $ \windowSet -> XS.modify $ \(Desktops m) -> - Desktops $ flip (Map.insert name) m $ - Desktop $ Map.fromList $ - map (\(W.Screen ws sid _) -> (sid, W.tag ws)) $ W.screens windowSet + Desktops $ + flip (Map.insert name) m $ + Desktop $ + Map.fromList $ + map (\(W.Screen ws sid _) -> (sid, W.tag ws)) $ W.screens windowSet restoreDesktop :: String -> X () restoreDesktop name = do @@ -47,7 +51,7 @@ restoreDesktop name = do fromMaybe scr $ do wid <- Map.lookup (W.screen scr) screenToWorkspace workspace <- Map.lookup wid workspacesById - return $ scr { W.workspace = workspace } + return $ scr {W.workspace = workspace} newScreens = map newScreenWorkspace (cur : vis) newVisibleWorkspaces = map (W.tag . W.workspace) newScreens @@ -55,6 +59,5 @@ restoreDesktop name = do filter (\ws -> not (W.tag ws `elem` newVisibleWorkspaces)) $ W.workspaces ws - (newCur:newVisible) = newScreens - in - W.StackSet newCur newVisible newHiddenWorkspaces float + (newCur : newVisible) = newScreens + in W.StackSet newCur newVisible newHiddenWorkspaces float |