<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, May 7, 2014 at 10:11 AM, Martin Gräßlin <span dir="ltr"><<a href="mailto:mgraesslin@kde.org" target="_blank">mgraesslin@kde.org</a>></span> wrote:<br>

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


[2]<br>
<a href="https://picasaweb.google.com/lh/photo/hGjW0RLjGF3UVw5wFnPMqdMTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/hGjW0RLjGF3UVw5wFnPMqdMTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[3]<br>
<a href="https://picasaweb.google.com/lh/photo/hriAb8OI1Yh8BtxtAg5bG9MTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/hriAb8OI1Yh8BtxtAg5bG9MTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[4] <a href="https://picasaweb.google.com/lh/photo/9LLTICdSJhcHl-SCBWc_i9MTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/9LLTICdSJhcHl-SCBWc_i9MTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[5] <a href="https://picasaweb.google.com/lh/photo/-krx0xvGFjq9TwkEC4Bh_tMTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/-krx0xvGFjq9TwkEC4Bh_tMTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[6] <a href="https://picasaweb.google.com/lh/photo/BfuvOcm0_v_BG-SkoxXJ29MTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/BfuvOcm0_v_BG-SkoxXJ29MTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[7]<br>
<a href="https://picasaweb.google.com/lh/photo/Vya50RqaVq1ij6sMDHEnbdMTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/Vya50RqaVq1ij6sMDHEnbdMTjNZETYmyPJy0liipFm0?feat=directlink</a><br>


[8] <a href="https://picasaweb.google.com/lh/photo/2Xa5xNqDmjGL-bXwFzmPWdMTjNZETYmyPJy0liipFm0?feat=directlink" target="_blank">https://picasaweb.google.com/lh/photo/2Xa5xNqDmjGL-bXwFzmPWdMTjNZETYmyPJy0liipFm0?feat=directlink</a></blockquote>

</div><br></div><div class="gmail_extra">Personally, I don't think we want to even try to convince them against. They're introducing interaction within the decoration space so they are committed to the idea.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">I would suggest to fill the found problems as bugs in GTK and get them to fix them hopefully. Most of them seem to be bugs afterall, I've been using Chromium with CSD and I don't experience most of the described issues.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">Aleix</div></div>