Docs for ManageHook

This commit is contained in:
Spencer Janssen
2007-11-09 03:18:10 +00:00
parent e2ab6e8a27
commit b51f6f55a8

View File

@@ -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)