diff options
Diffstat (limited to 'lib/DynamicPerScreenWorkspaces.hs')
-rw-r--r-- | lib/DynamicPerScreenWorkspaces.hs | 10 |
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 |