On Nov 20, 2007 10:01 AM, David Roundy <droundy@darcs.net> wrote:
On Mon, Nov 19, 2007 at 09:54:06PM -0500, Brent Yorgey wrote:
> As seen on xmonad@!  A module which allows you to configure layouts
> per-workspace.  Testing, comments, criticisms, edits, etc. welcome.

This is buggy when multiple screens are in use, because of the following
code:

   -- figure out which layout to use based on the current workspace.
   doLayout (PerWorkspace wsId Nothing l1 l2) r s  = do
       t <- getCurrentTag
       doLayout (PerWorkspace wsId (Just $ wsId == t) l1 l2) r s

There's no guarantee that the *current* screen is the one that's having
doLayout called.  :( 

We also have trouble with:

   handleMessage (PerWorkspace wsId Nothing l1 l2) m = do
       t <- getCurrentTag
       handleMessage (PerWorkspace wsId (Just $ wsId == t) l1 l2) m

because the message might have been sent using broadcastMessage rather than
sendMessage, so we again might not be the main workspace.

David, thanks for the bug reports.  I don't have multiple screens so I didn't even think about that problem... oops!  Unfortunately, I don't have a lot of time right now, so for the moment I think I will just change the code to ignore messages received before doLayout gets called, and add a note to say that it doesn't (yet) work in conjunction with multiple screens.  If someone wants to try fixing it in a more general way, be my guest.

-Brent