[Xmonad] [sebastian.goll@gmx.de: Re: [dwm] Greyish blobs]

Donald Bruce Stewart dons at cse.unsw.edu.au
Sun Jun 17 23:12:36 EDT 2007

This is a little weird. Spencer: was this expected. Does it mean that
the 'grey blobs' window is somehow not visible, and previously was just
left on the screen?

----- Forwarded message from Sebastian Goll <sebastian.goll at gmx.de> -----

Date: Sun, 17 Jun 2007 21:29:19 +0200
From: Sebastian Goll <sebastian.goll at gmx.de>
To: dwm at suckless.org
Subject: Re: [dwm] Greyish blobs

On Sun, 17 Jun 2007 11:27:11 +0200
"Szabolcs Nagy" <nszabolcs at gmail.com> wrote:

> have you tried other wms?

Just tried current xmonad version (Sun Jun 17 07:23:22 CEST 2007) and it
works correctly, ie. it doesn't show any greyish blobs (but has the same
flicker as ion3, wmii, and plain X). The problem appeared in xmonad too,
but is fixed by patch "Hide windows that are not supposed to be visible"
(Mon Jun 11 21:18:09 CEST 2007, patch attached).

I hope that helps identify the problem.


----- End forwarded message -----

This is the patch that apparently fixes the 'grey blobs' window:

Mon Jun 11 21:18:09 CEST 2007  Spencer Janssen <sjanssen at cse.unl.edu>
  * Hide windows that are not supposed to be visible

    hunk ./Operations.hs 24
    -import Data.List            (genericIndex, intersectBy)
    +import Data.List            (genericIndex, intersectBy, nub, (\\))
    hunk ./Operations.hs 87
    -shift n = withFocused hide >> windows (W.shift n)
    --- TODO: get rid of the above hide.  'windows' should handle all hiding and
    --- revealing of windows
    +shift n = windows (W.shift n)
    hunk ./Operations.hs 132
    -    let ws = f old
    +    let oldvisible = concatMap (W.integrate . W.stack . W.workspace) $ W.current old : W.visible old
    +        ws = f old
    hunk ./Operations.hs 138
    -    forM_ (W.current ws : W.visible ws) $ \w -> do
    +    visible <- fmap concat $ forM (W.current ws : W.visible ws) $ \w -> do
    hunk ./Operations.hs 187
    +        -- return the visible windows for this workspace:
    +        return (map fst rs ++ flt)
    hunk ./Operations.hs 194
    -    -- We now go to some effort to compute the minimal set of windows to hide.
    -    -- The minimal set being only those windows which weren't previously hidden,
    -    -- which is the intersection of previously visible windows with those now hidden
    -    mapM_ hide . concatMap (W.integrate . W.stack) $
    -        intersectBy (\w x -> W.tag w == W.tag x)
    -            (map W.workspace $ W.current old : W.visible old)
    -            (W.hidden ws)
    +    -- hide every window that was potentially visible before, but is not
    +    -- given a position by a layout now.
    +    mapM_ hide (nub oldvisible \\ visible)

More information about the Xmonad mailing list