Thing is, you people worked for years only on back-end stuff. You seem to know nothing about usability of user-facing parts (as evident by Weston's crappy usability). If KDE, Gnome, and Ubuntu applications got totally different title bars (in Ubuntu's case even with window buttons on the left side) because they're practically hardcoded because of CSD, it would hurt usability a lot more than stupid jagged pixel lines and those handful of people who resize Inkspace windows all the time.
At least in GTK and Qt CSD are optional. If you want to live in a usability nightmare, have fun there. I don't and that's why I'll turn CSD off and let KWin5 handle the window borders.
KWin has a good track record with performance and usability ever since Martin and Thomas took over main KWin development.
I see. Still, the switch on the functions is a good approach to avoid forcing developers for one or another.If you allow the user to always override the behaviour of apps, then apps will have to code for both CSD and SSD anyway. Which is kind of silly, when you think about it. If the application doesn't have CSD coded in, forcing it to CSD would just create a window sans decorations. If the application doesn't have the SSD codepaths, forcing it to use SSD would create possibly undefined behaviour, or in the best case a window with empty titlebar and buttons that may or may not do anything.
The default from the applications perspective can by definition only be SSD. And how SSD is being handled is the responsibility of the compositor. I heard that on plasma active for example SSD is equivalent to no decorations at all and on unity SSD would probably draw no decorations for maximized windows and standard decorations for everything else. On KDE or Gnome it would just be those standard decorations for everything.
1. The application is coded for SSD. => There is no switch
2. The application is coded for SSD and CSD. => There is a switch
Coding applications only for CSD is bad because
- desktops like plasma active or unity aren't possible
- consistency freaks can't always have consistent window decorations
There will probably still be these kinds of applications (think steam e.g.) but those wont work properly across all desktops.
So, for seamless porting, it would indeed most likely be the other way: the shell/WM provides an API for windows decorations. If an application does not call this API, then it's a CSD only app.
If it does call the API, it a SSD capable app.
The API would include calls for the application to say if it is also CSD capable, and to return the WM policy (use SSD or CSD) if both are available.
As user of a tiling WM (read: no window decorations at all besides a 1 pixel border) for me the possibility to force applications to use SSD is not an option, it is a must.
Simple as that, window decorations have no use at all for me and applications that would display them nonetheless would be not welcome on my systems.
Instead of bringing the current paradigms closer together you basically say: “Fuck mixed environments. I don't mix DigiKam with Gimp and you must neither and I don't care that Gnome does not allow for minimizing windows and Ubuntu's window controls are on the left when every other apps' buttons are on the right.”
SSD are the correct way for real-world scenarios. With CSD you can have your usability fuckup. I'm no one who wants to take configuration options away. As long as CSD are optional, I'm fine. I want to use Gimp 3 under PW2 and be able to minimize Gimp like I minimize Dolphin or pin a some window to be always visible or roll it up so only the title bar is visible.
No stupid jagged pixel line trumps that!