Hey all, I noticed dwm has a bug handling _NET_WM_STATE_FULLSCREEN when a window is mapped. The EWMH spec says, "The Window Manager SHOULD honor _NET_WM_STATE whenever a withdrawn window requests to be mapped. A Client wishing to change the state of a window MUST send a _NET_WM_STATE client message to the root window." dwm honours _NET_WM_STATE_FULLSCREEN client messages in clientmessage(), but ignores the property in manage(). We ought to refactor fullscreen toggling into a new function and check for the property when the window is mapped.
It would also be nice if dwm supported _NET_WM_WINDOW_TYPE hints as well, so we can make _NET_WM_WINDOW_TYPE_DIALOG windows float. (We could steal the updatewindowtype() function from Christoph Lohmann's dock patch.) I sometimes wonder whether it would be simpler to just make _NET_WM_STATE_FULLSCREEN switch dwm into monocle mode. Forcing one window to be at the front very often leads me to accidentally focus and interact with window hidden behind it. Which is why I think floating windows ought to be able to be behind tiled windows, too. I also think we could make floating windows smarter by letting you cycle through any floating windows visible on the same monitor, using selmon to root us to a single monitor rather than straying off because the window "belongs" to another monitor. This would require a single client stack instead of one per monitor, like I've talked about before. We could also make a floating window's canonical monitor dependent on area of intersection, like in dmenu tip. Just throwing that out there. Well, this email sort of became a loose assortment of ideas, but what do you folks think? I'll try to produce a few patches once I have some spare time (unless someone else wants to ;) ). Thanks, cls