aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Rahm/Desktop/Keys/Wml.hs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/Rahm/Desktop/Keys/Wml.hs b/src/Rahm/Desktop/Keys/Wml.hs
index 34dabd2..d6289bd 100644
--- a/src/Rahm/Desktop/Keys/Wml.hs
+++ b/src/Rahm/Desktop/Keys/Wml.hs
@@ -94,6 +94,22 @@ justWorkspace s =
, extraWorkspaceData = ()
}
+justWorkspaceWithPreferredWindow :: Window -> String -> Workspace
+justWorkspaceWithPreferredWindow w s =
+ Workspace {
+ moveLocationToWorkspaceFn = flip moveLocationToWorkspace s
+ , gotoWorkspaceFn = do
+ windows $ \ws' ->
+ let ws = W.greedyView s ws'
+ l = W.integrate' $ W.stack $ W.workspace $ W.current ws in
+ if w `elem` l
+ then W.focusWindow w ws
+ else ws
+
+ , workspaceName = Just s
+ , extraWorkspaceData = ()
+ }
+
blackHoleWorkspace :: Workspace
blackHoleWorkspace =
Workspace {
@@ -272,7 +288,7 @@ readNextWorkspace =
MaybeT $ fromX $ withWindowSet $ \ws -> return $ do
win <- locationWindow =<< head loc
winLocation <- W.findWindow ws win
- (justWorkspace . W.tag) <$> W.getLocationWorkspace winLocation
+ (justWorkspaceWithPreferredWindow win . W.tag) <$> W.getLocationWorkspace winLocation
(_, _, "~") ->
justWorkspace . accompaningWorkspace <$> readNextWorkspaceName