mirror of
https://github.com/xmonad/xmonad.git
synced 2025-08-03 05:31:54 -07:00
Docs for ManageHook
This commit is contained in:
@@ -25,31 +25,40 @@ import XMonad.Operations (floatLocation, reveal)
|
|||||||
type ManageHook = Query (WindowSet -> WindowSet)
|
type ManageHook = Query (WindowSet -> WindowSet)
|
||||||
type Query a = Window -> X a
|
type Query a = Window -> X a
|
||||||
|
|
||||||
|
-- | The identity hook that returns the WindowSet unchanged.
|
||||||
idHook :: ManageHook
|
idHook :: ManageHook
|
||||||
idHook = doF id
|
idHook = doF id
|
||||||
|
|
||||||
|
-- | Compose two 'ManageHook's
|
||||||
(<+>) :: ManageHook -> ManageHook -> ManageHook
|
(<+>) :: ManageHook -> ManageHook -> ManageHook
|
||||||
f <+> g = \w -> liftM2 (.) (f w) (g w)
|
f <+> g = \w -> liftM2 (.) (f w) (g w)
|
||||||
|
|
||||||
|
-- | Compose the list of 'ManageHook's
|
||||||
composeAll :: [ManageHook] -> ManageHook
|
composeAll :: [ManageHook] -> ManageHook
|
||||||
composeAll = foldr (<+>) idHook
|
composeAll = foldr (<+>) idHook
|
||||||
|
|
||||||
|
-- | 'p --> x'. If 'p' returns 'True', execute the 'ManageHook'.
|
||||||
(-->) :: Query Bool -> ManageHook -> ManageHook
|
(-->) :: Query Bool -> ManageHook -> ManageHook
|
||||||
p --> f = \w -> p w >>= \b -> if b then f w else idHook w
|
p --> f = \w -> p w >>= \b -> if b then f w else idHook w
|
||||||
|
|
||||||
|
-- | 'q =? x'. if the result of 'q' equals 'x', return 'True'.
|
||||||
(=?) :: Eq a => Query a -> a -> Query Bool
|
(=?) :: Eq a => Query a -> a -> Query Bool
|
||||||
q =? x = \w -> fmap (== x) (q w)
|
q =? x = \w -> fmap (== x) (q w)
|
||||||
|
|
||||||
|
-- | Queries that return the window title, resource, or class.
|
||||||
title, resource, className :: Query String
|
title, resource, className :: Query String
|
||||||
title = \w -> withDisplay $ \d -> fmap (fromMaybe "") $ io $ fetchName d w
|
title = \w -> withDisplay $ \d -> fmap (fromMaybe "") $ io $ fetchName d w
|
||||||
resource = \w -> withDisplay $ \d -> fmap resName $ io $ getClassHint d w
|
resource = \w -> withDisplay $ \d -> fmap resName $ io $ getClassHint d w
|
||||||
className = \w -> withDisplay $ \d -> fmap resClass $ io $ getClassHint d w
|
className = \w -> withDisplay $ \d -> fmap resClass $ io $ getClassHint d w
|
||||||
|
|
||||||
|
-- | Modify the 'WindowSet' with a pure function.
|
||||||
|
doF :: (WindowSet -> WindowSet) -> ManageHook
|
||||||
|
doF f = const (return f)
|
||||||
|
|
||||||
|
-- | Move the window to the floating layer.
|
||||||
doFloat :: ManageHook
|
doFloat :: ManageHook
|
||||||
doFloat = \w -> fmap (W.float w . snd) (floatLocation w)
|
doFloat = \w -> fmap (W.float w . snd) (floatLocation w)
|
||||||
|
|
||||||
|
-- | Map the window and remove it from the 'WindowSet'.
|
||||||
doIgnore :: ManageHook
|
doIgnore :: ManageHook
|
||||||
doIgnore = \w -> reveal w >> return (W.delete w)
|
doIgnore = \w -> reveal w >> return (W.delete w)
|
||||||
|
|
||||||
doF :: (WindowSet -> WindowSet) -> ManageHook
|
|
||||||
doF f = const (return f)
|
|
||||||
|
Reference in New Issue
Block a user