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

Reply via email to