mirror of
https://github.com/xmonad/xmonad.git
synced 2025-08-04 22:21:56 -07:00
First cut at manageHook
This commit is contained in:
@@ -62,6 +62,9 @@ modMask = mod1Mask
|
|||||||
defaultGaps :: [(Int,Int,Int,Int)]
|
defaultGaps :: [(Int,Int,Int,Int)]
|
||||||
defaultGaps = [(0,0,0,0)] -- 15 for default dzen
|
defaultGaps = [(0,0,0,0)] -- 15 for default dzen
|
||||||
|
|
||||||
|
manageHook :: Window -> X (WindowSet -> WindowSet)
|
||||||
|
manageHook _ = return id
|
||||||
|
|
||||||
-- |
|
-- |
|
||||||
-- numlock handling:
|
-- numlock handling:
|
||||||
--
|
--
|
||||||
|
@@ -7,3 +7,4 @@ logHook :: X ()
|
|||||||
numlockMask :: KeyMask
|
numlockMask :: KeyMask
|
||||||
workspaces :: [WorkspaceId]
|
workspaces :: [WorkspaceId]
|
||||||
possibleLayouts :: [SomeLayout Window]
|
possibleLayouts :: [SomeLayout Window]
|
||||||
|
manageHook :: Window -> X (WindowSet -> WindowSet)
|
||||||
|
@@ -20,7 +20,7 @@ module Operations where
|
|||||||
|
|
||||||
import XMonad
|
import XMonad
|
||||||
import qualified StackSet as W
|
import qualified StackSet as W
|
||||||
import {-# SOURCE #-} Config (borderWidth,logHook,numlockMask,possibleLayouts)
|
import {-# SOURCE #-} Config (borderWidth,logHook,manageHook,numlockMask,possibleLayouts)
|
||||||
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Data.List (nub, (\\), find, partition)
|
import Data.List (nub, (\\), find, partition)
|
||||||
@@ -49,8 +49,6 @@ import Graphics.X11.Xlib.Extras
|
|||||||
--
|
--
|
||||||
manage :: Window -> X ()
|
manage :: Window -> X ()
|
||||||
manage w = whenX (fmap not $ isClient w) $ withDisplay $ \d -> do
|
manage w = whenX (fmap not $ isClient w) $ withDisplay $ \d -> do
|
||||||
setInitialProperties w
|
|
||||||
|
|
||||||
sh <- io $ getWMNormalHints d w
|
sh <- io $ getWMNormalHints d w
|
||||||
|
|
||||||
let isFixedSize = sh_min_size sh /= Nothing && sh_min_size sh == sh_max_size sh
|
let isFixedSize = sh_min_size sh /= Nothing && sh_min_size sh == sh_max_size sh
|
||||||
@@ -62,10 +60,11 @@ manage w = whenX (fmap not $ isClient w) $ withDisplay $ \d -> do
|
|||||||
= W.RationalRect (0.5 - wid/2) (0.5 - h/2) wid h
|
= W.RationalRect (0.5 - wid/2) (0.5 - h/2) wid h
|
||||||
adjust r = r
|
adjust r = r
|
||||||
|
|
||||||
let f ws | isFixedSize || isTransient = W.float w (adjust rr) . W.insertUp w . W.view i $ ws
|
f ws | isFixedSize || isTransient = W.float w (adjust rr) . W.insertUp w . W.view i $ ws
|
||||||
| otherwise = W.insertUp w ws
|
| otherwise = W.insertUp w ws
|
||||||
where i = fromMaybe (W.tag . W.workspace . W.current $ ws) $ W.lookupWorkspace sc ws
|
where i = fromMaybe (W.tag . W.workspace . W.current $ ws) $ W.lookupWorkspace sc ws
|
||||||
windows f
|
g <- manageHook w
|
||||||
|
windows (g . f)
|
||||||
|
|
||||||
-- | unmanage. A window no longer exists, remove it from the window
|
-- | unmanage. A window no longer exists, remove it from the window
|
||||||
-- list, on whatever workspace it is.
|
-- list, on whatever workspace it is.
|
||||||
@@ -119,6 +118,7 @@ windows f = do
|
|||||||
let oldvisible = concatMap (W.integrate' . W.stack . W.workspace) $ W.current old : W.visible old
|
let oldvisible = concatMap (W.integrate' . W.stack . W.workspace) $ W.current old : W.visible old
|
||||||
ws = f old
|
ws = f old
|
||||||
XConf { display = d , normalBorder = nbc, focusedBorder = fbc } <- ask
|
XConf { display = d , normalBorder = nbc, focusedBorder = fbc } <- ask
|
||||||
|
mapM_ setInitialProperties (W.allWindows ws \\ W.allWindows old)
|
||||||
whenJust (W.peek old) $ \otherw -> io $ setWindowBorder d otherw nbc
|
whenJust (W.peek old) $ \otherw -> io $ setWindowBorder d otherw nbc
|
||||||
modify (\s -> s { windowset = ws })
|
modify (\s -> s { windowset = ws })
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user