A better solution for correct ordering :)

This commit is contained in:
Matthias Schiffer 2011-07-18 15:20:40 +02:00
parent 527abbe03a
commit 4456299ef5

View file

@ -31,6 +31,7 @@ modm = mod4Mask
main = xmonad $ ewmh $ defaultConfig main = xmonad $ ewmh $ defaultConfig
{ modMask = modm { modMask = modm
, manageHook = myManageHook , manageHook = myManageHook
, unmanageHook = myUnmanageHook
, layoutHook = desktopLayoutModifiers myLayoutHook , layoutHook = desktopLayoutModifiers myLayoutHook
, startupHook = myStartupHook , startupHook = myStartupHook
, handleEventHook = myEventHook , handleEventHook = myEventHook
@ -108,10 +109,32 @@ myStartupHook = do
isUtility :: Query Bool isUtility :: Query Bool
isUtility = isInProperty "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_UTILITY" isUtility = isInProperty "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_UTILITY"
stackHook :: (Window -> W.Stack Window -> W.Stack Window) -> ManageHook
stackHook f = ask >>= \w -> doF $ \s -> s { W.current = mapScreen w (W.current s)
, W.visible = map (mapScreen w) (W.visible s)
, W.hidden = map (mapWorkspace w) (W.hidden s)
}
where
mapWorkspace w ws = ws { W.stack = fmap (f w) $ W.stack ws }
mapScreen w scr = scr { W.workspace = mapWorkspace w (W.workspace scr) }
moveDown1 :: ManageHook
moveDown1 = stackHook down
where
down w (W.Stack c u (d:dx)) | c == w = W.Stack c (d:u) dx
down _ stack = stack
moveUp1 :: ManageHook
moveUp1 = stackHook up
where
up w (W.Stack c (u:ux) d) | c == w = W.Stack c ux (u:d)
up _ stack = stack
myManageHook :: ManageHook myManageHook :: ManageHook
myManageHook = composeAll myManageHook = composeAll
[ isDialog --> doFloat [ moveDown1
, isDialog --> doFloat
, composeOne , composeOne
[ className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff) [ className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff)
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff) --, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
@ -130,6 +153,9 @@ myManageHook = composeAll
, manageHook desktopConfig , manageHook desktopConfig
] ]
myUnmanageHook :: ManageHook
myUnmanageHook = moveUp1
myLayoutHook = processWorkspaceManager $ manageFullscreen $ smartBorders (Full ||| tiled ||| Mirror tiled) myLayoutHook = processWorkspaceManager $ manageFullscreen $ smartBorders (Full ||| tiled ||| Mirror tiled)
where where