
Now lets take a quick look at what is currently done and where the implementation issues lie regarding your suggestions.
doIgnore is what is currently done. manageDocks is just short for checkDock --> doIgnore. Thats also whats probably causing the issue with dzen being on top after restart.
Frankly I don't see the problem with that doIgnore is "currently done": I think it's checkDock is causing your problem that "all windows on the current screen resize and redraw when pressing the modkey". If you use doIgnore alone, there won't be a checkDock, so there shouldn't be any resizes.
The question is how to reveal it in a convenient way.
I mentioned that there could be xmonad functions to do that, but if not, I almost sure you can find command line utilities for Xorg to move any window in/out of screen. They could find the window by one of the parameters returned by these commands (run in terminal and click desired window to see): xprop|grep CLASS xprop|grep ^WM_NAME
I dont even really have an idea how to find the dzen window in my event hook, as I cannot store a WindowSet in the manageHook as its not compatible with ExtensibleState.
Neither do I. But not sure this is needed.
The same issue occurs with your 2nd suggestion.
Which issue? doFloat isn't "done currently".
How do I get the window in the eventHook to call reveal/hide on it?
Haskell expert wanted.
Any suggestions?
Run out of pool.
Jan
P.S. I think the X.L.Monitor packages looks interesting but it still has a todo regarding the same task, as it also needs to store which window it manages.