10.07.2012
Highlevel GUI Inconsistencies: Tabbing
von T_UNIX.
Everybody knows tabs and tabbed applications like webbrowsers or OO Calc.
The grouping of multiple instances/windows of a single application makes perfect sense and removes clutter from the user’s workspace.
So what’s wrong with it?
Its implementation! Basically tabs are nothing but window management + radio buttons. Somehow toolkit developers started to implement their own tabbed view and handled the window management. Everybody who’s familiar with the X protocol (widely used under Linux/Unix) might have figured out already, what I’ll be complaining about.
X windows have properties. One of them is the window class. This window class property could allow a composite manager to provide a tab view. The tabview could provide a consistent look and feel accross toolkits and even expose tabs in a new (maybe even better) way. Seriously, all a window manager should be doing is handling windows/window groups. It’s not the job of a toolkit! Toolkits may proxy tabbing for platforms like Windows, but they shouldn’t implement their own!
Why are things the way they are right now?
I guess nobody can tell for sure. But I’d put my bet on a situation where developers said: “Let’s implement our own tabview, so we’re more awesome than the others.”. And maybe they thought: “Our usecase for tabs is waaaay different than those of other applications.”. Really? If I had to guess I’d say you’d need a text preview (maybe even a livethumb) connected to a ‘show window’ like mechanism.
Are only application/toolkit developers to blame?
No, I think it’s mostly the fault of desktop environment/shell developers (I’m looking at you GNOME/KDE/Enlightenment/Cinnamon) who didn’t show off how nicely tabview/application could be done in a generic fashion yet a bit customizable for using apps.
I hope that will change and developers start to use infrastructure that is already there (e.g. PID+window class) instead of propagating inconsistency while making the world a ‘better’ place.
Maybe I’ll even get around to implement some prototype ‘generic tabbing’ for Enlightenment and it’ll gain traction and inspire developers of other desktop environments.
As an outlook of how I – personally – could imagine consistent tab experience, I’d like to refer to Clayton Miller’s concept, he presents at 10gui. It already takes the transition of modern input technologies from hard buttons to more touch-based into account.

28.07.2012
13:35
mks ¶
Totally with you here. AFAIK KDE has tabbing in KWin, but I am not sure, how you can use it or if it’s in a usable state at all. I am also not aware of applications making use of this.
Also Haiku has had something called “Stack and Tile” for quite a while now, but–again AFAIK–there is currently no API yet to facilitate this (but there is some talk about how the browser could use this for example).
The feature is already totally usable though. Have a look at this: http://www.youtube.com/watch?v=m_FIUle8DsM
(Also thanks for the blog post ;) )
01.08.2012
15:32
T_UNIX ¶
From a technical perspective, Haiku does that really nice.
Sadly, Haiku doesn’t support as many GPUs in terms of acceleration. Hopefully that’ll change with Gallium support.
On a side note: Haiku’s default theme (are there any others?) isn’t that visually appealing to me :-/
E17 btw. has modules called ‘comp_scale’ and ‘winlist_ng’, which allow you to see windows of the same group in an ‘exposé’ and ‘list’ fashion respectively. Their visibility can be bound to e.g. screen edges. But I think it’s improvable.
Some days ago I’ve made a first step and added support to launch new instances of the currently focused application using a keybinding. In a couple of weeks I’ll add the ability to reopen closed applications using a keybinding (e.g. ctrl-shift-w) too.
Maybe I’ll get to create some concept of nice tabbing too.
Also, thanks for the comment :)
17.10.2012
12:07
Cédric ¶
It’s not possible to handle tabs with window class, please be serious…
What is needed is a standard dbus protocol to handle tabs behaviour and contextual menus, it’s not just about window grouping (kwin actually do this but it’s not really usable: no context menu).
17.10.2012
15:42
T_UNIX ¶
You’re right about using the window class for tabbing is wrong. But if you used dbus for that, you’d move stuff from the windowing protocol and IPC to a general IPC probably duplicating information that’s already around in the X11 world.
About your dbus idea/approach: I also thought about doing something like that at least for e.g. menus. I thought that it would be nice to implement gtk/qt menu classes that would communicate via dbus to a corresponding menu daemon that would render menus using e.g. efl :)
17.10.2012
14:09
Anonymous ¶
How do i open a link in a new tab in Firefox if tabs are handled by the Window Manager? I guess you’d open it in a new window instead, but does that really cover all use cases?
17.10.2012
15:44
T_UNIX ¶
Hm… maybe you have a different idea of what tabs actually are, than I have. But I – essentially – think they’re nothing more than a bunch of windows handled by an in-app-compositor.
17.10.2012
14:25
Dean Howell ¶
If you’re developing cross-platform applications like Oo, Lo and Firefox, what good does it do to rely on Xorg for window properties? Even if you did, what will you do when the world moves to Wayland?
17.10.2012
15:48
T_UNIX ¶
I firmly believe that cross platform apps have an abstraction layer for that. Furthermore I do believe that Microsoft, in its current effort of streamlining their user interface experience, will cover tabs as well. I believe they will strongly focus on user experience consistency as a selling point of Windows 8 + accompanying tablet :)
17.10.2012
17:21
Gene Mosher ¶
If you look at this application, which is a point of sale (POS) GUI written to Xlib primitives, you can see how I use tabs. They are the column along the right edge in this screenshot from 1997.
If anyone would like to discuss my application then I would be glad to receive an email from them. I can also provide source code. This X application handles remote display/input sessions for multiple users very nicely and works great on tablets in any resolution.
gene@viewtouch.com
20.10.2012
11:50
T_UNIX ¶
Thanks for your comment, but you seem to be reimplementing tab management like many other apps out there, sadly. The point of my post was, that this should change ;)
P.S.: Your post smells a bit like an advertisement
17.10.2012
17:21
Gene Mosher ¶
Oops. Forgot the link!
http://www.viewtouch.com/select.html
21.10.2012
10:27
mks ¶
There is a discussion with some interesting points on reddit about this article: Reddit