Monday, June 4, 2012

Why I think GNOME 3 and GTK+ 3 is subtlety trying to kill off the other DEs

As someone who spends hours toying with the look and feel of his machine's GUI (with only quite a few handful of people appreciating these efforts due to the fact that people today accept the ugly fact that they all look the same), consistency is a very important factor in the overall aesthetics of my work environment. Every window and dialog should look similar to each other in shape, color and form. Begrudgingly, the only operating system/suite of desktop applications that has accomplished the goal of total consistency is Mac OS X. However, I do so believe [from experience] that consistency can also be accomplished in a GNU/Linux environment, provided you have the time and patience to configure your system.

Most applications that use a Graphical User Interface (GUI) on GNU/Linux usually use either GTK+ (GIMP Toolkit, or for those who like extremely long names, the GNU is not Unix Image Manipulator Program ToolKit) or Qt. GTK+ is by far the more popular choice for developers, although Qt has done a bit in terms of catching up (I personally prefer Qt over GTK+, but that's probably because I have not gone knee deep in GTK+ programming yet). GTK+ is primarily used in the GNOME Desktop Environment, while Qt is primarily employed in the K Desktop Environment.

Because of its popularity, other DEs besides GNOME use GTK+ as well. XFCE (my personal choice and longtime favorite) and LXDE use it, as well as many other less popular DEs. Even if you only use a Window Manager (WM) for minimalism, most of the GUI applications you are going to run are probably using GTK+.

With the introduction of GNOME 3, however, the devs at GNOME also introduced a new version of GTK+, GTK+ 3. The third major release of GTK+ includes many new widgets and features that we shouldn't really care about (unless you're a developer developing GUI apps in GTK+), but it also introduced an annoying side-effect: the lack of backwards compatibility.

The explosive popularity of Ubuntu's Unity and the distributions that choose to ship with GNOME3 by default has in turn raised the popularity of GNOME3 and GTK+ 3 in return. Which means more developers are now aiming to target the demographic that uses Unity and GNOME 3 by using the latest version of GTK+. While this is nice for people who use Unity and GNOME 3, it's not really that beneficial for those who use DEs that only use GTK+ 2 by default (e.g. XFCE).

Here comes the problem: When an application uses GTK+ 2, it loads the GTK+ 2 theme that the user chose for their environment and uses the widgets and pretty things from that theme to decorate itself. And when the application uses GTK+ 3, it does the same except this time it loads up GTK+ 3. What happens then, if the application does not find a working theme for the GTK+ version it's running on? It will start to look like this:


Bleh, right? It kinda reminds me of the classic Windows look, when everything was all boxy and threatened to molest your eyes if you stare at it for far too long. What happened here is that gitg (the program above) uses GTK+ 3, but the GTK+ theme I have set on my machine doesn't support GTK+ 3. So gitg had no choice but to fallback to the ugly defaults that are only suitable for the root user.

It appears that the only viable solution for this is to find GTK+ themes that work in both GTK+ 2 and GTK+ 3. Which is a nuisance because there are only a handful of themes right now that support both versions. So when you find a really cool GTK+ theme online (hopefully it's not something that's trying to rip off OS X's look) and you've decided to check it out and install it, some applications are going to look completely out of place when they can't find the appropriate widgets from your theme for their GTK+ version.

But then again, some theme developers are kind enough to support both GTK+ 2 and GTK+ 3 engines to appeal to a wider audience. But only "some", though. So that means the blame partly goes to the theme developers as well, who are too busy trying to rip off the look of OS X and not investing that time to make rip offs of the OS X interface that works on GTK+ 2 and GTK+ 3.

And while we're on the topic of desktop environments, allow me to shamelessly insert a screenshot of my working environment (which is in no way looking like a rip-off of OS X):