Sorry guys Iām a noob. What are Client Side Decorations (CSD)? Whatās the point of having them enabled or disabled?
The are basically two ways of decorate a windows. The Client Side Decorations (CSD) and Server Side Decorations (SSD). See the picture:
We have in red the area that is painting by the application itself (CLIENT SIDE) and in blue the area that is painting by the windows manager (SERVER SIDE). Note this is an approximation, where we donāt included the windows borders and shadows. In the left there are a window that was decorated with SSD and in the right a windows that was decorated with CSD. Also note that we called SSD to something than in practice have both type of decorations, because in the picture just the titlebar was decorated in the side of the server. Actually the server side decoration what it does is create a container (box) on the server side with a title bar at the top and then puts everything that was decorated on the client inside this container.
The SSD are the traditional Linux way to paint windows while the CSD is a relative new implementation in Linux made by GNOME. As itās relative new it have not a good support outside GNOME. One link that can help you to understand the problematic and the decision of Microsoft about the usage of CSD, can be found here . Please read it fully.
Basically if all is implemented ok in all environments, you can emulate the same result of a SSD in a CSD implementation. So, CSD is a more general way to decorate the windows, but as the decoration is in the side of the application, is the author of that specific application who need to decide how it want to decorate his window. As you can notice, this introduce more flexibility and then more different ways of decorate a window. So, this fully break all uniformity of your desktop, as some developers can decide made one thing while others can decide made a different thing. In that context the user behavior are lost, because one application can look like in one way, while another in another way. To make it much more complicate, GNOME decided do NOT emulate the SSD in his CSD, and then his applications are look like really different than the traditional onces.
How now you can have several different representations of the same application, is necessary make explicit how a desktop want his applications and this is why is now commons speak about HIG. This concept was not needed before because all Linux applications was looking more or less the same. Now this is not true (thanks to GNOME). In fact is worse, because the GNOME HIG is changing in the time, and itās much more difficult to be follow by the developers. So one application can follow the version 3.32.1 while other can have the 3.16.2, because his author donāt update it yet to the last version. To me this is just crazy and specially in Linux where we know people work more for love than for money.
In that context, GNOME begin to forced his own developers to support CSD, when in some cases is clear they donāt want to do it. Also they try to force others external Gtk developers to support it only explaining the advantage of CSD inside GNOME, but hiding the disadvantage outside it.
On the another hands and to satisfy both perspectives, some applications decide to support both types of decorations, like was gnome-terminal and firefox. So, this is why is now a decision of the user what type of decoration it want to use and then I hope read this will help you to understand the point of having them enabled or disabledā¦
I wrote also something relate to CSD here:
https://askubuntu.com/questions/1050378/for-ubuntu-18-04-is-there-a-way-to-show-drop-down-menus-for-a-certain-applicati/1050565#1050565
This is the vision of the KDE developers about the GNOME way:
Also i will need to add, that others external GNOME developers think that CSD just break the Linux way and they try to fix that problematic creating a hack to force to disable the CSD. This is the case of the library called gtk3-nocsd. Just read what think his author, who is a developer of the LXDE and LXQT desktop, about it here.
In LinuxMint the solution to the GNOME CSD iniciative was that the Mint developers create a different set of applications called XApps, to fork all GNOME core applications and continuous making it SSD. As his principal developer and author of the LinuxMint project Clement Lefebvre said:
GTK itself and many of the GNOME applications now integrate better with GNOME Shell and look more native in that environment. The bad news, is that they now look completely out of place everywhere else.