Ubuntu / Linux news and application reviews.

Starting with GNOME 3.10, some GNOME applications have switched to "header bars" or "client-side decorations". These CSD (client-side decorations) don't work properly in some desktop environments / shells - for instance, in Ubuntu 14.04, Unity doesn't support CSD and because of this, some applications look broken. Luckily, there is now a relatively easy way (unofficial) of disabling client-side decorations. Read on!

In Ubuntu, Nautilus and a few other GNOME apps are patched so they don't use client-side decorations under Unity. However, not all applications were fixed - here are a few examples:

GNOME Clocks

Latest gThumb 3.3.2 (gThumb from the Ubuntu repositories was downgraded when the Ubuntu devs noticed it's using CSD)

GNOME Maps

PCMan, one of the LXDE founders, has created gtk3-nocsd, a small module which can be used to disable the GTK+3 client-side decorations. gtk3-nocsd can achieves this by letting GTK think there's no compositor available, in which case the CSD fail to start.

Here are the same 3 applications as above, with gtk3-nocsd (so with disabled client-side decorations), under Ubuntu 14.04 LTS:





Update (7 Oct 2015): back when we first wrote about gtk3-nocsd, there were some issues. Firstly, it couldn't be used globally under Unity, so you had to manually edit the desktop file for each application you wanted to use it with or launch the app from the command line. Another issue was that the CSD close button would still show up even if a CSD application used a traditional titlebar. And finally, the tool didn't support all client-side decoration applications (for instance it didn't work with GNOME Weather).

Well, gtk3-nocsd was updated recently and all these issues were fixed for this release.


Install gtk3-nocsd


Ubuntu 14.04 or 15.04 users can install gtk3-nocsd by using the main WebUpd8 PPA. To add the PPA and install gtk3-nocsd, use the following commands:
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install gtk3-nocsd

Or, if you don't want to add the PPA, download the gtk3-nocsd deb from HERE.

Other Linux distributions: grab the gtk3-nocsd code from GitHub, make sure pkg-config and gtk+3-dev are installed and compile it using "make".


Configure gtk3-nocsd


Update: gtk3-nocsd now automatically disables header bars on non-GNOME desktops without any configuration. After installing it, simply restart your session (logout/login).

If you want to disable gtk3-nocsd (and thus, enable client-side decorations) for all users (so you only run specific applications without header bars), open /etc/X11/Xsession.d/01gtk3-nocsd with a text editor as root - I'll use Gedit below:
gksu gedit /etc/X11/Xsession.d/01gtk3-nocsd

And in this file, uncomment the "#export GTK_CSD=0" line (to "uncomment" means to remove the "#" in front of the line), and change "GTK_CSD=0" to "GTK_CSD=1", then save the file and log out.

0 is used for disabling client-side decorations and 1 to enable them.

If you want to only disable gtk3-nocsd (enable client-side decorations) for your user, you can add the following to your ~/.xsessionrc file (if it doesn't exist, create this file):
export GTK_CSD=1
Then save the file and log out.

Using these settings, client-side decorations will be enabled for all applications however, you can manually run applications without client-side decorations by using the gtk3-nocsd wrapper. As an example, to run GNOME Weather without client side decorations, use:
gtk3-nocsd gnome-weather

For more information about this, see the /usr/share/doc/gtk3-nocsd/README.Debian file.

Report any issues you may find with gtk3-nocsd @ GitHub.