I Hate GTK Tabs
I’m a big fan of GTK. It’s generally a very nice-looking GUI toolkit, with good, consistent UI. It’s a total blast to program in, especially after doing Windows GUI programming at Microsoft (shudder). I’m in awe that it’s managed to create a full-fledged object system in C of all languages.
That said, there are some things that bother my about GTK, as there are about everything I use. Everyone knows about the annoying default size of the file-opening dialog, and everyone wishes it were compositor-aware. I’m pretty sure the powers that hack are working on these at the moment anyway.
The one thing that bugs me more than either of these, though, seems to have gone mostly unnoticed by everyone else. I hate GTK tabs. They are gargantuan, hideous, unusable monstrosities.

Let me explain where I’m coming from. I consider Firefox’s tabs essentially the gold standard. They’re nice-looking and have good UI. If GTK just mimicked FF’s tabs, I would be happy.

Aesthetics
To begin with, GTK’s tabs are just ugly. Granted, a lot of this has to do with my themes, so this rant is partially directed against them, too.
It’s disappointing, really. Tango and Clearlooks are both usually excellent. It seems like they kind of dropped the ball here.
For example, look at the selected tab above. Sure, it’s adequately marked, but it’s ugly. It’s even bigger than the other, already huge tabs. The blue gradient just looks gaudy. It feels like the Clearlooks folks just arbitrarily picked a few attributes and said, “these define a selected tab!”
Compare that the the Firefox selected tab. Like GTK/Clearlooks, it just changes a few attributes to specify that it’s selected. But they all work towards a single, clear feeling: that the tab is brighter.
The background gradient is replaced by pure white. The text is bold. The thing practically gleams.
And the close button! Normally all of Tango’s icons are vibrant and clear. But this X is office-building-hallway gray1, and looks like it belongs in one of those “hand-drawn” themes.
Again, compare that to the Firefox icon:
.
It’s shiny, it’s bright red.
It looks like an actual button.
Finally, the GTK tabs are just big. The tab bar itself is only a few pixels taller than Firefox’s, but GTK’s tabs themselves take up more of that space than Firefox’s. And they get bigger when they’re selected.
Why is it bad to be big? Mostly personal preference, I guess. I prefer things to be as small as they can be while remaining readable. Of course it provides more screen real estate, but really I just think smaller widgets look better. Cleaner. More sleek.
User Interface
If I were just bothered by aesthetic issues with GTK tabs, though, it would hardly be worth making a blog post about. What really gets me about is, I think, more universal. The UI is completely counterintuitive and aggravating.
One of the most important aspects of a tab control’s UI is how it handles overflow. When there are tons of tabs, it becomes impossible to display them all at the same time.
There are a few standard strategies for dealing with this. You could only display the most recently accessed tabs, and have a dropdown list to access the rest. Visual Studio does that, and it works well, especially with the added benefit of Ctrl+Tab, which works like Alt+Tab but with documents instead of windows.
You could also just move the extra tabs out of view of the user, and give a way of scrolling the tab bar to see them. This is what Firefox does (in addition to a version of the dropdown list).
Looking at the screenshot above, you might guess that GTK takes the same approach as Firefox. The arrows on either side certainly suggest that. But alas, GTK decided to throw consistency to the wind and use the same visual design to signify something different in tricky ways.
In Firefox, when you click the right arrow, all the tabs scroll to the left. It works just like a scrollbar. In GTK, when you click the right arrow, it selects the tab immediately to the right of the current tab.
This is horrific.
As I’ve already pointed out, this doesn’t conform to any model the user might already have of how that button would work. It doesn’t work like Firefox. It doesn’t work like a scrollbar. It doesn’t work like anything the user’s familiar with.
What’s more, what it does do is almost totally unhelpful. In almost all cases, it could be accomplished by clicking the tab you want. Unless the tab you want is next to your current tab, just clicking it would actually be faster.
There’s only one situation in which the arrow button provides more functionality than just clicking a tab. When the tab you want has overflowed and isn’t visible, you need to use the arrow to navigate to it.
In this case, Firefox’s behavior is clearly better. It allows you to expose more than one tab at a time. You can examine the tabs before you select them. You don’t have to select the last visible tab before seeing the invisible ones.
I’m sure I can’t be the only one who detests these. But I have hope. GTK is being actively developed, and various aesthetic and UI issues are gradually disappearing. With luck this’ll be among those soon.
1 Or green. I dunno, I’m partially colorblind.
About Me
Feed
Terminal Syntax Highlighting



You and me both!
I like the default behavior. Different strokes, I guess.
I’m curious: what do you like about the GTK behavior? It seems to me almost totally useless.
It keeps me within a certain context; on my screen, I can only see about seven tabs in Epiphany at any one time, meaning that I’m not distracted by the other thirty in the window. When I need them, they’re there, and I can get to them easily. And when I don’t, I don’t.
I can’t agree more! Only Glider has some smaller tabs and Big tabs are really annoying in Eclipse for example :(