Wednesday, February 1, 2017

gtk3 nocsd Module To Disable Client Side Decorations Sees New Release

gtk3 nocsd Module To Disable Client Side Decorations Sees New Release


gtk3-nocsd is a module used to disable client-side decorations, either globally (for all applications) or only for certain applications.

The module was updated to version 3 recently and it includes quite a few improvements:
  • added bash completion support for gtk3-nocsd wrapper;
  • added custom CSS for cosmetic improvements of the header bar look when CSDs are disabled (should be largely theme-agnostic, but tested against Adwaita);
  • drop compositor trick in Gtk+3 3.16.1 or higher; the set_titlebar function is reimplemented there anyway, and this should solve some possible issues with newer GTK3 versions;
  • selectively disable decorations: dont drop the application menu icon by using set_show_close_button (FALSE), but instead replace the decoration_layout string of header bars to remove the "icon", "minimize", "maximize" and "close" buttons. This should fix issues with missing GNOME menu (with gThumb 3.4.x as an example);
  • also override GtkDialogs GtkBuildable->add_child and the instance initializer of GtkShortcutsWindow; previously CSDs werent removed from all windows because of that;
  • added a test that verifies that no Glib/Gtk symbols are imported during link time (to make sure preloading works with BINDNOW binaries that dont use Gtk);
  • Improvements to the documentation.

gtk3-nocsd was included in the Debian (sid and stretch) repositories about 2 months ago and its also available in the Ubuntu 16.10 Yakkety Yak repositories. These official packages enable gtk3-nocsd automatically in non GNOME desktops (except Unity), without requiring any configuration.

The gtk3-nocsd packages in the main WebUpd8 PPA now include the official Debian packaging however, Ive modified it slightly to allow the module to work without any configuration in Unity, like it does for other non-GNOME desktops.

Heres a screenshot with gtk3-nocsd enabled (and thus, client-side decorations disabled) in Ubuntu 14.04:


Ubuntu 16.04 (with Unity) supports client-side decorations so you dont really need gtk3-nocsd, but if you want to use it for whatever reason (consistency would be one), note that it wont look that good with the default Ambiance theme. You can try something like Numix theme instead:


For installing gtk3-nocsd in Ubuntu and its optional configuration, see our initial (updated) article: How To Disable GTK3 Client-Side Decorations (Header Bars)


Available link for download