
On Wed, Sep 23, 2009 at 06:49:14PM +0200, Christian Walther wrote:
Hi,
I'm currently using xmonad 0.8.1 compiled with ghc-6.8.3 on NetBSD 5.0.1 i386, after migrating from FreeBSD i386. After building all the software I needed/wanted, including Firefox and Pidgin, I noticed that not all windows where sent to the right workspace I configured them for. I noticed (or at least I thought) that some xprops changed, and I edited myManageHook to contain:
myManageHook = composeAll [ title =? "Buddy List" --> doF (W.shift "9") , className =? "Gran Paradiso" --> doF (W.shift "8") ]
(And some more, of course...)
This has some interesting side effect, because every time I start either Firefox or Pidgin and their window appear on workspace 8 or 9, the window that has the focus is sent to exactly the same workspace, too. Commenting out both entries fixed this issue. Since they aren't needed (which is a perfect example of why working on a computer when being tired is a bad idea) this is just a minor issue. But I wonder if this behavior due to the nature of composeAll or something in Haskell I'm unfamiliar with (which is, at present, most of the language).
Regards Christian Walther
My guess is that multiple rules are matching on one window, causing 'doF (W.shift x)' to execute multiple times. The first shift executed will shift the new window, the second will shift the window that was focused before the new window was managed. We've noticed this issue recently in contrib, and now provide: -- | Move the window to a given workspace doShift :: WorkspaceId -> ManageHook doShift i = doF . W.shiftWin i =<< ask This function is in the darcs version of xmonad, but you can also paste the definition in your xmonad.hs. Replace 'doF (W.shift x)' with 'doShift x'. Cheers, Spencer Janssen