4 ms·
Keep in mind that DWM explicitly does not obey the ICCCM [0] (because they don't like it), meaning that large groups of applications might function erratically
by Jasper_ 5y ago
Keep in mind that DWM explicitly does not obey the ICCCM [0] (because they don't like it), meaning that large groups of applications might function erratically on it. This is not an idle concern -- I've had several bugs reported to me in some applications I've written were because the user wasn't running an ICCCM-compliant WM.
[0] https://www.x.org/releases/current/doc/xorg-docs/icccm/icccm.html https://www.x.org/releases/current/doc/xorg-docs/icccm/icccm... , the standard for how X11 clients and WMs should communicate.
- ninjin 5y agoDo you have a link to a bug report? I tried digging around a bit as I got curious how bugs like these would manifest, but could not find anything good to link. What I am aware of is that Java application can break without workarounds (saw it in the documentation somewhere) and that Steam needs an explicit workaround [1]. [1]: https://dwm.suckless.org/patches/steam https://dwm.suckless.org/patches/steam
- IiydAbITMvJkqKf 5y agoAll java applications refuse to render without said workaround, because AWT expects the WM to reparent its windows. This is IMO a bug in the JRE, because there is no requirement for the WM to reparent. I use steam on dwm without the steam patch, haven't noticed an issue so far.
- dfox 5y agoWhich is highly ironic as the probably only WM written in Java (Project Looking Glass) is not reparenting. IIRC the issue with AWT and non-reparenting WMs is mostly limited to popup (ie. override-redirect) windows that are positioned in relation to some kind of owner window (which means menus, tooltip popups...). AWT simply expectes that parent window of its window to be the frame window of reparenting WM and calulates the position in respect to that, if there isn't the frame window the position of the popup inside root window will be calculated as if the root window was the frame, which can result in anything from the position being slightly wrong (eg. shifted down by the height of awesome's "menu" bar) to the window being completely off-screen.
- IiydAbITMvJkqKf 5y agoAWT has hardcoded special treatment for WMs which call themselves "LG3D". Which is why [1] exists. Update: found the JDK code [2] [1] https://tools.suckless.org/x/wmname/ https://tools.suckless.org/x/wmname/ [2] https://github.com/openjdk/jdk/blob/9759fcb17b62d76d75b893481bbd4ef45e7ad366/src/java.desktop/unix/classes/sun/awt/X11/XWM.java#L582-L584 https://github.com/openjdk/jdk/blob/9759fcb17b62d76d75b89348...