summaryrefslogtreecommitdiffstats
path: root/lib/DynamicPerScreenWorkspaces.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/DynamicPerScreenWorkspaces.hs')
-rw-r--r--lib/DynamicPerScreenWorkspaces.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/DynamicPerScreenWorkspaces.hs b/lib/DynamicPerScreenWorkspaces.hs
index 263174d..66bbf11 100644
--- a/lib/DynamicPerScreenWorkspaces.hs
+++ b/lib/DynamicPerScreenWorkspaces.hs
@@ -6,6 +6,7 @@ module DynamicPerScreenWorkspaces ( screenWorkspaceStorage
, dynamicRescreenHook
, create
, cleanup
+ , focusWindow
, view
, viewOn
, viewOnCurrent
@@ -128,6 +129,15 @@ create conf i = do
cleanup :: X ()
cleanup = windows cleanup'
+focusWindow :: DynamicWorkspaceConfig -> Window -> X ()
+focusWindow conf w = do
+ wset <- gets windowset
+ let mws = W.findTag w wset
+ whenJust mws $ \ws -> do
+ let i = head $ filter ((== ws) . workspaceTag conf) [0..]
+ sid <- workspaceScreen conf i
+ windows' $ liftM (cleanup' . W.focusWindow w) . viewOn' conf sid i
+
view :: DynamicWorkspaceConfig -> Int -> X ()
view conf i = do
sid <- workspaceScreen conf i