skweez.net

Alles skweez?

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.

Firefox Tabbing

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.

flattr this!

12 Kommentare:

28.07.2012
13:35

Antworten

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

Antworten

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

Antworten

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
14:09

Antworten

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
14:25

Antworten

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
17:21

Antworten

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

21.10.2012
10:27

Antworten

mks

There is a discussion with some interesting points on reddit about this article: Reddit

Etwas dazu sagen: