diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-02-27 16:18:48 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-02-27 16:18:48 +0100 |
commit | 016dc1e4b7e90c3e83f29a3575aa800f193cc8be (patch) | |
tree | 0551b32c906fc66ec359996f8aba9322d1a3163e /lib/ProcessWorkspaces.hs | |
parent | 0b80dad888724f0ba8a5cb5bad06bedfc7a69572 (diff) | |
download | xmonad-conf-016dc1e4b7e90c3e83f29a3575aa800f193cc8be.tar xmonad-conf-016dc1e4b7e90c3e83f29a3575aa800f193cc8be.zip |
Allow moving whole processes to other workspaces
Diffstat (limited to 'lib/ProcessWorkspaces.hs')
-rw-r--r-- | lib/ProcessWorkspaces.hs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/ProcessWorkspaces.hs b/lib/ProcessWorkspaces.hs index 74bf6c0..0b14bff 100644 --- a/lib/ProcessWorkspaces.hs +++ b/lib/ProcessWorkspaces.hs @@ -4,6 +4,8 @@ module ProcessWorkspaces ( setProcessWorkspace , getProcessWorkspace , doAutoShift , doIgnoreProcessWorkspace + , shiftGroup + , shiftWinGroup , processWorkspaceStorage , spawnOn , spawnOnCurrent @@ -21,7 +23,6 @@ import System.Posix.Types (ProcessID) import Control.Monad import Data.Maybe -import Data.Monoid import qualified Data.Map as M import Storage @@ -48,6 +49,26 @@ doIgnoreProcessWorkspace = do liftX $ setProcessWorkspace (fromJust mp) Nothing idHook +shiftGroup :: WorkspaceId -> X () +shiftGroup ws = withFocused $ shiftWinGroup ws + +shiftWinGroup :: WorkspaceId -> Window -> X () +shiftWinGroup ws w = do + mp <- runQuery pid w + case mp of + Just p -> do + mws <- getProcessWorkspace p + case mws of + Just pws -> do + setProcessWorkspace p (Just ws) + wins <- withWindowSet $ return . W.allWindows + windows =<< foldM (\f w' -> runQuery pid w' >>= \mp' -> return $ if (mp' == Just p) then W.shiftWin ws w' . f else f) id wins + _ -> + windows $ W.shiftWin ws w + _ -> + windows $ W.shiftWin ws w + + data ProcessWorkspaceStoreData = ProcessWorkspaceStoreData (M.Map ProcessID (Maybe WorkspaceId)) deriving (Typeable, Show, Read) instance StoreData ProcessWorkspaceStoreData |