From 7464528c1a78f37e7451398f736c9826775e5e65 Mon Sep 17 00:00:00 2001 From: Mats Jansborg Date: Sun, 19 Aug 2007 15:21:04 +0200 Subject: Changed getName to use locale-aware functions Rewrote getName using getTextProperty and wcTextPropertyToTextList. darcs-hash:20070819132104-7344d-78695db057adecf12b37a3caae6ef1b624aae4f2.gz --- XMonad/Util/NamedWindows.hs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'XMonad/Util/NamedWindows.hs') diff --git a/XMonad/Util/NamedWindows.hs b/XMonad/Util/NamedWindows.hs index c38e25b..719d599 100644 --- a/XMonad/Util/NamedWindows.hs +++ b/XMonad/Util/NamedWindows.hs @@ -22,6 +22,9 @@ module XMonad.Util.NamedWindows ( unName ) where +import Control.Monad.Reader ( asks ) +import Control.Monad.State ( gets ) + import qualified XMonad.StackSet as W ( peek ) @@ -40,9 +43,15 @@ instance Show NamedWindow where show (NW n _) = n getName :: Window -> X NamedWindow -getName w = asks display >>= \d -> do s <- io $ getClassHint d w - n <- maybe (resName s) id `fmap` io (fetchName d w) - return $ NW n w +getName w = withDisplay $ \d -> do + let getIt = bracket getProp (xFree . tp_value) (fmap (`NW` w) . copy) + + getProp = (internAtom d "_NET_WM_NAME" False >>= getTextProperty d w) + `catch` \_ -> getTextProperty d w wM_NAME + + copy prop = head `fmap` wcTextPropertyToTextList d prop + + io $ getIt `catch` \_ -> ((`NW` w) . resName) `fmap` getClassHint d w unName :: NamedWindow -> Window unName (NW _ w) = w -- cgit v1.2.3