diff --git a/arbtt.cabal b/arbtt.cabal
--- a/arbtt.cabal
+++ b/arbtt.cabal
@@ -1,5 +1,5 @@
 name:               arbtt
-version:            0.1.2
+version:            0.1.3
 license:            GPL
 license-file:       LICENSE
 category:           Desktop
diff --git a/src/Capture.hs b/src/Capture.hs
--- a/src/Capture.hs
+++ b/src/Capture.hs
@@ -14,9 +14,11 @@
 	dpy <- openDisplay ":0"
         xSetErrorHandler
 	let rwin = defaultRootWindow dpy
-	(_,_,cwins) <- queryTree dpy rwin
 
-	cwins <- filterM (isInterestingWindow dpy) cwins
+	a <- internAtom dpy "_NET_CLIENT_LIST" False
+	p <- getWindowProperty32 dpy a rwin
+	let cwins = maybe [] (map fromIntegral) p
+
 	(fwin,_) <- getInputFocus dpy
 	winData <- mapM (\w -> (,,) (w == fwin) <$> getWindowTitle dpy w <*> getProgramName dpy w) cwins
 
@@ -24,19 +26,6 @@
 
 	closeDisplay dpy
 	return $ CaptureData winData it
-
--- copied from XMonad/Main.hs, where function "ok" from "scan"
-isInterestingWindow :: Display -> Window -> IO Bool
-isInterestingWindow dpy w = do
-	wa <- getWindowAttributes dpy w
-	a  <- internAtom dpy "WM_STATE" False
-	p  <- getWindowProperty32 dpy a w
-	let ic = case p of
-		  Just (3:_) -> True -- 3 for iconified
-		  _          -> False
-	return $ not (wa_override_redirect wa)
-		 && (wa_map_state wa == waIsViewable || ic)
-
 
 getWindowTitle :: Display -> Window -> IO String
 getWindowTitle dpy w = fmap (fromMaybe "") $ fetchName dpy w
