In Client Side Decorations (CSDs) application windows draw their controls themselves, instead of depending in Window Manager. This isn’t something exclusively in GTK, all Toolkits are required to have signals like Kill/Close, Maximize, Unmaximize, Minimize, Fullscreen, Move, Hide, Resize, Focus and so on.

What was wrong with GTK’s CSD Applications is that GNOME Team went too aggressively with the implementation, and they didn’t respect the non-GNOME desktops, or even their own GNOME Classic Mode.

In GNOME 3 applications don’t require other controls than Close [ x ]. But what happens if we run a GNOME3 application outside of GNOME3 environment, or in GNOME3 Classic, which depends on window minimizations?

GNOME 3 Window Controls Support

Matthias Clasen in his post “Client-side decorations, continued” explains the concept of controls in CSDs, and illustrates some examples of how to use them.

Because Matthias was using demos to illustrate his point, like the above figure, I thought it was something that it could be done ( which is normal ), but GNOME applications were just ignoring it.

But check this out!

I am using Classic because it fits better, but controls obviously work in Shell as well. Note that not all applications are currently using them ( like Nautilus and others ), and you can file bugs for any of them ( there is already for Nautilus ).

Applications use the “gtk-decoration-layout” property which you can set to your XSettings.

You can easily set it from Dconf-Editor ( above figure ) or from Terminal:

$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/DecorationLayout': <':minimize,maximize,close'>}"

Note that this schema is different than Mutter’s controls. My guess is that Tweak Tool 3.12 will include it anyway, so you won’t have to mess up with those stuffs.

As another sidenote, from IRC discussions, GNOME Design Team will try to find another ways of display the controls, since they are stealing too much horizontal space. Plus there is the concept of Background Applications that may want to use an additional window control, for example [ . ].