Allow shifting windows ignoring process groups

This commit is contained in:
Matthias Schiffer 2011-02-28 22:08:02 +01:00
parent ef2d12e398
commit 4f4f864fd3
2 changed files with 22 additions and 5 deletions

View file

@ -4,6 +4,8 @@ module ProcessWorkspaces ( setProcessWorkspace
, getProcessWorkspace , getProcessWorkspace
, doAutoShift , doAutoShift
, doIgnoreProcessWorkspace , doIgnoreProcessWorkspace
, shiftIgnoreGroup
, shiftWinIgnoreGroup
, shiftGroup , shiftGroup
, shiftWinGroup , shiftWinGroup
, processWorkspaceStorage , processWorkspaceStorage
@ -49,6 +51,14 @@ doIgnoreProcessWorkspace = do
liftX $ setProcessWorkspace (fromJust mp) Nothing liftX $ setProcessWorkspace (fromJust mp) Nothing
idHook idHook
shiftIgnoreGroup :: WorkspaceId -> X ()
shiftIgnoreGroup ws = withFocused $ shiftWinIgnoreGroup ws
shiftWinIgnoreGroup :: WorkspaceId -> Window -> X ()
shiftWinIgnoreGroup ws w = do
runQuery doIgnoreProcessWorkspace w
windows $ W.shiftWin ws w
shiftGroup :: WorkspaceId -> X () shiftGroup :: WorkspaceId -> X ()
shiftGroup ws = withFocused $ shiftWinGroup ws shiftGroup ws = withFocused $ shiftWinGroup ws

View file

@ -32,6 +32,7 @@ main = xmonad $ gnomeConfig
, layoutHook = desktopLayoutModifiers myLayoutHook , layoutHook = desktopLayoutModifiers myLayoutHook
, startupHook = myStartupHook , startupHook = myStartupHook
, handleEventHook = myEventHook , handleEventHook = myEventHook
, workspaces = myWorkspaces
} }
`additionalKeysP` ( `additionalKeysP` (
[ ("M-a", sendMessage MirrorShrink) [ ("M-a", sendMessage MirrorShrink)
@ -47,8 +48,10 @@ main = xmonad $ gnomeConfig
, ("M-<F3>", viewOrWarp 2) , ("M-<F3>", viewOrWarp 2)
, ("M-b", banishScreen LowerRight) , ("M-b", banishScreen LowerRight)
, ("M-p", spawnOnCurrent "exe=`dmenu_path | /home/neoraider/bin/dmemu -b` && eval \"exec $exe\"") , ("M-p", spawnOnCurrent "exe=`dmenu_path | /home/neoraider/bin/dmemu -b` && eval \"exec $exe\"")
] ++ ]
[ (("M-S-" ++ show n, shiftGroup ws)) | (ws, n) <- zip (workspaces gnomeConfig) ([1..9]++[0])] ++ [ (("M-" ++ show n, windows $ W.greedyView ws)) | (ws, n) <- zip myWorkspaces ([1..9]++[0])]
++ [ (("M-S-" ++ show n, shiftGroup ws)) | (ws, n) <- zip myWorkspaces ([1..9]++[0])]
++ [ (("M-C-" ++ show n, shiftIgnoreGroup ws)) | (ws, n) <- zip myWorkspaces ([1..9]++[0])]
) )
`additionalMouseBindings` `additionalMouseBindings`
[ ((modm, button4), \_ -> sendMessage Shrink) [ ((modm, button4), \_ -> sendMessage Shrink)
@ -58,6 +61,9 @@ main = xmonad $ gnomeConfig
] ]
myWorkspaces = ["Firefox", "Thunderbird", "Emacs", "4", "5", "6", "7", "8", "Chat", "10"]
viewOrWarp :: Int -> X () viewOrWarp :: Int -> X ()
viewOrWarp n = do viewOrWarp n = do
wset <- gets windowset wset <- gets windowset
@ -96,12 +102,13 @@ isUtility = do
myManageHook :: ManageHook myManageHook :: ManageHook
myManageHook = composeAll myManageHook = composeAll
[ composeOne [ isDialog --> doFloat
[ isDialog -?> doFloat , composeOne
, className =? "Guake.py" -?> (doFloatMaybeFullscreen <+> doIgnoreProcessWorkspace) -- <+> doConfigBorderOff) [ className =? "Guake.py" -?> (doFloatMaybeFullscreen <+> doIgnoreProcessWorkspace) -- <+> doConfigBorderOff)
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff) --, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
, className =? "Gmpc" -?> doIgnoreProcessWorkspace , className =? "Gmpc" -?> doIgnoreProcessWorkspace
, className =? "Liferea" -?> doIgnoreProcessWorkspace , className =? "Liferea" -?> doIgnoreProcessWorkspace
, className =? "Gnome-session" -?> doIgnoreProcessWorkspace
, className =? "MPlayer" -?> doCenterFloat , className =? "MPlayer" -?> doCenterFloat
, className =? "Gimp" -?> doFloat , className =? "Gimp" -?> doFloat
, className =? "Display" -?> doFloat , className =? "Display" -?> doFloat