GTK apps window decorations

Hi! Thanks for recommending the library. If I can help with building or using it, feel free to write.

I still use and recommend gtk3-nocsd instead of gtk3-classic, for those that only want the CSD removed from the apps. It works as it should with modern versions of GTK3, on wayland too.

Gtk4-nocsd works in similar ways to the gtk3 counterpart, for regular GTK4 apps it creates a top container where it puts the controls from the CSD, then it uses CSS to hide window controls and make the window have corners and finally unset the decoration from GTK side to remove the padding but set it from the window manager/compositor side to get it back.

For libadwaita the whole rearranging is not needed, since libadwaita does not hide the CSD when the decoration is removed, there only the title text is hidden in that step. (yes, it is easier to remove libadwaita CSD, than regular GTK4 CSD)

A last thing to add, GTK4 hides the xdg toplevel, which functions as a sort of API key on the wayland side. It is only available in a private struct, and the Build.sh script bruteforce mines the location of it, tries each shift by 8 bytes until once the small test app does not crash, then uses that shift to build the library, which then is guaranteed to work only on that nano version (4.20.x, x is nano). It might work later, but there was already one version jump where they rearranged this private struct and it was different. On X there is no such thing and a build is guaranteed to work on later versions