From b15fd831fe6dbf4d9c970d226d72edab2f98d540 Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Fri, 2 May 2008 10:42:49 +0000 Subject: [PATCH] NamedWindows: when converting the text property, handle the empty list. This fixes a "Prelude.head" exception observed with windows that have no title. Reproduce by placing several windows in the tabbed layout, then starting 'xterm -name ""'. Thanks to Andrea for pointing out the issue. --- XMonad/Util/NamedWindows.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/XMonad/Util/NamedWindows.hs b/XMonad/Util/NamedWindows.hs index c29519ea..4ab7078d 100644 --- a/XMonad/Util/NamedWindows.hs +++ b/XMonad/Util/NamedWindows.hs @@ -44,12 +44,17 @@ instance Show NamedWindow where getName :: Window -> X NamedWindow getName w = withDisplay $ \d -> do + -- TODO, this code is ugly and convoluted -- clean it up 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 + copy prop = do + xs <- wcTextPropertyToTextList d prop + return $ case xs of + [] -> "" + (x:_) -> x io $ getIt `catch` \_ -> ((`NW` w) . resName) `fmap` getClassHint d w