--nextPart1486638.SOUkBD1KVK Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="utf-8" Hi all, I need some advice. The new GTK+ release introduced and enforces client-side- decorations (CSD) and that is causing severe compatibility problems with Plasma Workspaces (especially the stable release which we cannot adjust any more). I'll give a list of issues below. I'm not sure what we can do about it. I think we need to do something about it, because this looks like a road back to "GTK apps can only be used in GNOME Shell" resulting in "KDE apps can only be used in Plasma". Because of that I think the compatibility problems matters to everyone also our application developers. I think the right thing is to contact the GTK+ developers and point out the problems, but I am probably the wrong person for it as I'm a known opponent of CSD and fear that my feedback would be ignored. As a fallback strategy we could enforce server-side-decorations (SSD) for all GTK+ applications which would look strange [4] but at least no loss in functionality. Of course there are things we can do in KWin to improve compatibility, but 4.11 is feature frozen and these would require new code and we have certainly more important things to do than to fix client breakage (we don't do that in general). It would be way easier if GTK+ would detect whether the environment supports CSD and use a normal application design if that's not supported. This would not only be relevant for us, but especially for tiling window managers. List of issues I noticed: * A hung window can no longer be closed or moved. Technical explanation: there is a ping protocol to detect hung applications. KWin only sends ping requests when the window is being closed from the window manager (e.g. decoration close button or Alt+F4). * quick tiling broken, see [1]. It includes the shadow in calculation. * black shadows around window if compositing gets disabled after the window got opened [2]. Technical explanation: GTK+ doesn't detect that compositing gets enabled/disabled. Other direction is broken, too. * double borders if window gets opened when compositing is disabled [3]. Technical explanation: GTK+ uses the Motif Window Manager Hints to tell how the decoration should look like. KWin is not the Motif Window Manager and does not fully support the hints. Fun fact our code has a comment that we follow Metacity to only support those hints which are not stupid. * double border if decorations on KWin side are enforced [4] (Alt+F3 -> More Actions -> No Border). Technical explanation: GTK+ doesn't detect the re- parenting and doesn't hide it's own deco and shadow * Wrong resize cursor is shown on edges [6] * Windows don't have a maximize and minimize button although configured in the decoration settings * Incorrect drag delay: KWin uses either a drag delay on distance or on time for starting move or resize. GTK+ only has a drag delay on distance for moving and none for resizing. That's an important accessibility feature to have that globally configurable * Windows can no longer be shaded * Windows can no longer be put into window tabs * Dialogs don't have a close button [5] (unless run without compositing) * Ignores the configured mouse actions, uses (hard coded?) actions. Defaulting to lower window on middle click while we use window tab drag on middle click * no visual distinction between active and inactive application * Broken window snapping: window snaps to shadow [7] * Mismatching application window menu [8]. Note our menu could be invoked through DBus. I consider this as a big problem as that's the only way to e.g. add windows to activities (which is also broken now) or to access the advanced window manager features GNOME doesn't know of. That list I figured out in less than 10 min usage of a new GTK+ application. I assume and fear that the list is much longer. Any advice on how to handle this situation is appreciated. Cheers Martin [1] https://picasaweb.google.com/lh/photo/_q8BS4WN91ZvjEGSsiUkqtMTjNZETYmyPJy0liipFm0?feat=directlink [2] https://picasaweb.google.com/lh/photo/hGjW0RLjGF3UVw5wFnPMqdMTjNZETYmyPJy0liipFm0?feat=directlink [3] https://picasaweb.google.com/lh/photo/hriAb8OI1Yh8BtxtAg5bG9MTjNZETYmyPJy0liipFm0?feat=directlink [4] https://picasaweb.google.com/lh/photo/9LLTICdSJhcHl-SCBWc_i9MTjNZETYmyPJy0liipFm0?feat=directlink [5] https://picasaweb.google.com/lh/photo/-krx0xvGFjq9TwkEC4Bh_tMTjNZETYmyPJy0liipFm0?feat=directlink [6] https://picasaweb.google.com/lh/photo/BfuvOcm0_v_BG-SkoxXJ29MTjNZETYmyPJy0liipFm0?feat=directlink [7] https://picasaweb.google.com/lh/photo/Vya50RqaVq1ij6sMDHEnbdMTjNZETYmyPJy0liipFm0?feat=directlink [8] https://picasaweb.google.com/lh/photo/2Xa5xNqDmjGL-bXwFzmPWdMTjNZETYmyPJy0liipFm0?feat=directlink --nextPart1486638.SOUkBD1KVK Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part. Content-Transfer-Encoding: 7Bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEABECAAYFAlNp6sAACgkQqVXwidMiVrp8nwCeIGculXOiRz2yJQ3PUJvm1pmD UmQAn2qXdpPtRLoeObc5RLq6oSMR4a87 =RDMG -----END PGP SIGNATURE----- --nextPart1486638.SOUkBD1KVK--