Earlier quoted context omitted.
>I absolutely consider xdg-decoration to be the common ground because it gives behavior similar to Windows, X11, macOS, BeOS, and just about every other platform out there. No, not really. On those other platforms you would link against the toolkit. >If someone’s X11 WM doesn’t give them window borders, that’s fine: they probably have a lot of apps with no window borders, that’s probably the point of their WM. Same t…
> No, not really. On those other platforms you would link against the toolkit. This is factually incorrect. On Win32, window borders are drawn out-of-process by the OS. You do need to link to CreateWindow in user32, but that’s only vaguely a “UI toolkit” as CreateWindow is closer to a syscall than a library function. macOS internals are harder for me to ascertain, but it seems similar in how responsibility is split b…
You would still need to link against the toolkit. Plus, if it's a syscall, that means the kernel is involved in drawing the decorations, which is probably not going to happen in Linux. Sorry. Not every OS is built the same as Windows. If you like the way Windows is built, you might want to use it and not Linux.
>Besides that, GTK is not the canonical toolkit of Linux or Wayland.
Right, but that doesn't change it. If you want GTK decorations, you link against GTK. If you want other decorations then you link against another toolkit. If you don't care about the decorations and just want whatever then you could use xdg-decoration or libdecor, but not all app developers will want that.
>So this is not a reasonable option even if it would be on another system.
I don't understand what you mean reasonable? Both ways work if you're designing a system, you only have to care about them if you're a developer because it's a minor implementation detail.
>They make GTK apps behave badly, but most Qt stuff works pretty reasonably.
My experience is actually the opposite, Qt apps are even more likely to have odd sizing issues or inconsistent behavior. But I probably used a different set of apps than you did.
>considering they don’t ask for much other than accurate window hints and no custom borders
Maybe the window manager developers don't ask for anything but the apps are still broken. A lot of desktop apps cannot be placed into 1/6th of the corner of the screen and still work correctly but that's what tiling WMs try to do. Especially on a laptop with a small screen I find this behavior to be completely unusable. The window hints and borders are really not significant compared to all the other issues, so I honestly have no idea why some people seem to be so focused on that.
>That just means my app will look like crap if the compositor doesn’t support xdg-decoration.
This makes no sense to me. Libdecor will draw the fallback, if your app correctly supports xdg-decoration then it has to draw a fallback. The only thing xdg-decoration does is allow the compositor to draw fallbacks in some circumstances, so if you think the fallbacks all look like crap, then nothing you do there will ever help. There is no possible way to solve your problem.
>The difference is not whether or not window borders are optional. The difference is whether the app or the compositor handles window borders.
It's the same difference. Just as in X11, some window managers will never handle the window borders. There is nothing you can do about this besides patching all those window managers. But you probably don't care about that because most people don't seem to switch window managers very often.