[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Compatibility problems with latest GTK+ applications
From:       Martin =?ISO-8859-1?Q?Gr=E4=DFlin?= <mgraesslin () kde ! org>
Date:       2014-05-07 8:11:37
Message-ID: 2148848.R81dd2aErX () martin-desktop
[Download RAW message or body]


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



["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic