From e9497d3506d3ff312fd92e6ff9ddf55367ca76ed Mon Sep 17 00:00:00 2001 From: Ismael Carnales Date: Wed, 4 Feb 2009 03:18:47 +0100 Subject: ManageHelpers: reduce duplicated code in predicates Ignore-this: e28a912d4f897eba68ab3edfddf9f26b darcs-hash:20090204021847-6553f-b28c28f4420af816d05a31075e671e4e5f47e8cf.gz --- XMonad/Hooks/ManageHelpers.hs | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'XMonad') diff --git a/XMonad/Hooks/ManageHelpers.hs b/XMonad/Hooks/ManageHelpers.hs index e5f25e4..e9a6cf3 100644 --- a/XMonad/Hooks/ManageHelpers.hs +++ b/XMonad/Hooks/ManageHelpers.hs @@ -124,28 +124,25 @@ isKDETrayWindow = ask >>= \w -> liftX $ do Just [_] -> True _ -> False --- | A predicate to check whether a window wants to fill the whole screen. --- See also 'doFullFloat'. -isFullscreen :: Query Bool -isFullscreen = ask >>= \w -> liftX $ do +-- | Helper to check if a window property contains certain value. +isInProperty :: String -> String -> Query Bool +isInProperty p v = ask >>= \w -> liftX $ do dpy <- asks display - state <- getAtom "_NET_WM_STATE" - full <- getAtom "_NET_WM_STATE_FULLSCREEN" - r <- io $ getWindowProperty32 dpy state w + pa <- getAtom p + va <- getAtom v + r <- io $ getWindowProperty32 dpy pa w return $ case r of - Just xs -> fromIntegral full `elem` xs + Just xs -> fromIntegral va `elem` xs _ -> False +-- | A predicate to check whether a window wants to fill the whole screen. +-- See also 'doFullFloat'. +isFullscreen :: Query Bool +isFullscreen = isInProperty "_NET_WM_STATE" "_NET_WM_STATE_FULLSCREEN" + -- | A predicate to check whether a window is a dialog. isDialog :: Query Bool -isDialog = ask >>= \w -> liftX $ do - dpy <- asks display - w_type <- getAtom "_NET_WM_WINDOW_TYPE" - w_dialog <- getAtom "_NET_WM_WINDOW_TYPE_DIALOG" - r <- io $ getWindowProperty32 dpy w_type w - return $ case r of - Just xs -> fromIntegral w_dialog `elem` xs - _ -> False +isDialog = isInProperty "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG" pid :: Query (Maybe ProcessID) pid = ask >>= \w -> liftX $ do -- cgit v1.2.3