Allow shifting windows ignoring process groups
This commit is contained in:
parent
ef2d12e398
commit
4f4f864fd3
2 changed files with 22 additions and 5 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
17
xmonad.hs
17
xmonad.hs
|
@ -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
|
||||||
|
|
Reference in a new issue