From b0719aed6d5f522e738f6d11220596cd139f4599 Mon Sep 17 00:00:00 2001 From: Roman Cheplyaka Date: Wed, 9 Apr 2008 19:49:35 +0200 Subject: XMonad.Util.WindowProperties: add WM_WINDOW_ROLE as Role darcs-hash:20080409174935-3ebed-fdde76e2a0889e75467fe94af6f34f875a738dac.gz --- XMonad/Util/WindowProperties.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/XMonad/Util/WindowProperties.hs b/XMonad/Util/WindowProperties.hs index b1d0055..87715a6 100644 --- a/XMonad/Util/WindowProperties.hs +++ b/XMonad/Util/WindowProperties.hs @@ -26,10 +26,11 @@ import qualified XMonad.StackSet as W -- In contrast to ManageHook properties, these are instances of Show and Read, -- so they can be used in layout definitions etc. For example usage see "XMonad.Layout.IM" --- | Property constructors are quite self-explaining. +-- | Most of the property constructors are quite self-explaining. data Property = Title String | ClassName String | Resource String + | Role String -- ^ WM_WINDOW_ROLE property | And Property Property | Or Property Property | Not Property @@ -43,6 +44,7 @@ hasProperty :: Property -> Window -> X Bool hasProperty (Title s) w = withDisplay $ \d -> fmap (Just s ==) $ io $ fetchName d w hasProperty (Resource s) w = withDisplay $ \d -> fmap ((==) s . resName ) $ io $ getClassHint d w hasProperty (ClassName s) w = withDisplay $ \d -> fmap ((==) s . resClass) $ io $ getClassHint d w +hasProperty (Role s) w = withDisplay $ \d -> fmap ((==) (Just s)) $ getStringProperty d w "WM_WINDOW_ROLE" hasProperty (And p1 p2) w = do { r1 <- hasProperty p1 w; r2 <- hasProperty p2 w; return $ r1 && r2 } hasProperty (Or p1 p2) w = do { r1 <- hasProperty p1 w; r2 <- hasProperty p2 w; return $ r1 || r2 } hasProperty (Not p1) w = do { r1 <- hasProperty p1 w; return $ not r1 } -- cgit v1.2.3