Hi all!

It is with great pleasure that I unveil a new and improved version of PerWorkspace, which discovers which workspace it is on using Spencer's idea of a special message type sent to all workspaces via a startupHook, rather than querying the currently focused workspace.  The result is that PerWorkspace is able to choose the correct layout right away, without waiting for a window to be created.  More excitingly, it also (should) mean that it works just fine with Xinerama!  emptyLayout is also implemented so this should close issue #127.  There is still definitely room to improve the code, perhaps via some sort of layout combinator class, but this is a good start.

I could push this to contrib myself, but (1) it depends on some patches to the core that I just sent, so I'll have to wait for those to be applied first, and (2) I don't have a xinerama setup so I can't actually test it on xinerama myself.  If anyone with a xinerama setup would be willing to confirm that this does indeed work in conjunction with xinerama I'd be grateful!  Once the core patches get applied and I get some confirmation that PerWorkspace now works in conjunction with xinerama, I'll go ahead and push to the contrib repo.

Please note that upgrading will require adding  startupHook = initPerWorkspace  to your config.  Other than that, your current PerWorkspace configuration can stay exactly as it is.  If you forget to add the startupHook, you won't get any errors but PerWorkspace simply will not work (all layouts will be displayed as "PerWorkspace" and the default layout will be used).  This is explained in the haddock PerWorkspace documentation.

xmonadically yours,
-Brent (byorgey)