Tab frenzy

Have to admit I cringe every time somebody adds tabs to an application. Not because I have anything against appropriate use of tabs (and I’ll reserve judgment on which of the recent additions are appropriate for another day), but because it’s such a wasteful duplication of effort, with each instance doubtless having its own inevitable little bugs and inconsistencies.

The HIG advises against document-level tabs in an app, largely because at the time, the usability team hoped GNOME would have a tabbed window manager in its not-too-distant future. The tab-related activity in the past week has me thinking me that we need this more than ever! App developers shouldn’t have to implement basic window management features, and (perhaps more importantly) users shouldn’t be restricted to grouping documents from the same application into tabbed windows–with a tabbed WM, they could still do so if they wanted to of course, but they’d also be free to group windows by task or project, or indeed any other way they wanted.

Is it worth starting to think a bit harder about how a tabbed WM might work (I don’t think we’ve ever sat down to try to design one for GNOME, although I know at least one tabbed WM has been implemented before)? ¬†Or is it just something that’s just never likely to happen?

Tags: , , , ,

35 Responses to “Tab frenzy”

  1. you speak the truth good sir. I was just about to rant on this surge of insanity myself.

  2. Dave says:

    I’ve used a few tabbed windows in the past, and my experience was that you really need some toolkit or app-level support to make it worth the trouble for us mere mortals. With existing tabbed WMs, you have to either manually combine windows, or write regex-based rules to do so.

    Such a thing, properly beyond its chicken-and-egg phase could be really nice though.

  3. dylanmccall says:

    The one trouble with doing this on the window manager level, and I realized this after looking at the calculator (strangely enough), is that the window manager is not smart enough to think “user wants another tab Right Now”; it just knows when the user wants to drag an open window inside of another open window.

    We have to drop the “windows are documents” metaphor, since it has been debated endlessly. It’s also wrong either way; windows are neither applications nor documents. Instead, we have to think “windows are widgets”. Yes, I know that is completely illogical when we consider what the terms actually are, but the thing with widgets is that they are following particular specifications yet all unique to certain tasks; they are representations of operations the user wants to do. Now, what does widgets? GTK, of course!

    I was thinking that we could add something to GTK: Different Toplevels!
    For example, there could be a Document toplevel, a generic Application toplevel, a Configuration toplevel and a Toolbox toplevel, each providing some magical widgetry for the task. This would serve as an abstraction of those window manager hints, and more importantly provide a container for applications to put themselves in.

    Then, some neutral libraries could be used to set application name and description (see http://tango.freedesktop.org/Window_Experiments), there could be extra containers to place menus and toolbars. Some magical glue later (and a few inversions of common sense), and we have a great framework for applications that does tabs automatically yet does not break any legacy software. It would also be plain nice to have running applications provide useful information about themselves, which this type of “application framework” could permit.

  4. Dylan McCall says:

    (Sorry if this comes through twice. I’m not sure I entirely trust that Launchpad OpenID login so far…)

    The one trouble with doing this on the window manager level, and I realized this after looking at the calculator (strangely enough), is that the window manager is not smart enough to think “user wants another tab Right Now,” and then get the program to produce another instance of the relevant task in a new window; it just knows when the user wants to drag an open window inside of another open window. Maybe, if it is remarkably clever (eg: out of scope), it will be able to launch another instance of that application when the user says so.

    We have to drop the “windows are documents” metaphor, since it has been debated endlessly. It’s also wrong either way; windows are neither applications nor documents. Instead, we have to think “windows are widgets”. Yes, I know that is completely illogical when we consider what the terms actually are, but the thing with widgets is that they are following particular specifications yet all unique to certain tasks; they are representations of operations the user wants to do. Now, what does widgets? GTK, of course!

    I was thinking that we could add something to GTK: Different Toplevels!
    For example, there could be a Document toplevel, a generic Application toplevel, a Configuration toplevel and a Toolbox toplevel, each providing some magical widgetry for the task. This would serve as an abstraction of those window manager hints, and more importantly provide a container for applications to put themselves in.

    Then, some neutral libraries could be used to set application name and description (see http://tango.freedesktop.org/Window_Experiments), there could be extra containers to place menus and toolbars. Some magical glue later (and a few inversions of common sense), and we have a great framework for applications that does tabs automatically yet does not break any legacy software. It would also be plain nice to have running applications provide useful information about themselves, which this type of “application framework” could permit.

  5. Ed says:

    An approach I would like is, for those cursed enough to use it, is Visual Studio style docking/tabbing applied to the entire desktop.

    For those who haven’t used it, any of the windows (except source unfortunately) can be dragged out of its location. Once its floating, if you continue to drag it, it will show indicators that yell out “Move your mouse to where I am and let go, and I will dock here or be tabbed with this window.” I would see the desktop as a “window” that you can tab with and dock to the sides of.

    This would allow a consistent and discoverable way for docking and tabbing both.

    For some information, you can look here
    http://www.codeproject.com/KB/toolbars/DockContainer.aspx

  6. nona says:

    I’ve had the exact same respons you do – I really hope this happens.

  7. Matthew West says:

    Wow, interesting idea. I imagine that he toolbar and menu bar would change depending on which tab was open, a bit like Gnucash, or the menu bar in Mac OS. You could have a dockable system like Eclipse so that the window was divided up into frames which could each contain their own set of tabs, or would that be too complex?
    How would The Gimp fit in? :)

  8. rodney says:

    when you refer to a tabbed window manager, are you talking about something like fluxbox has or is this something else?

  9. Maximus and the Window Picker applet from the Ubuntu Netbook Remix effectively turn Metacity into a tabbed window manager. It works rather well.

  10. aaa says:

    finally someone awake for the future in gnome. i doubt it would be hard to implement this with metacity and the netwm/blabla… specs, even without stuffing the core with useless junk. hell i’d spend the time writing it in a modularish way if i knew it would get to trunk someday and not get scrapped or forgotten in some sf.net page. i’ve got the p.g.o feed subscribed and use to follow it, if you want to, say something and i just might leave the confort of my tiling wm and send you some working code

    cheers

  11. johan says:

    I think you missed a couple of jokes or two!

  12. Joseph says:

    Take 2 windows. Drag one around the other, and a tab outline appears at the top, above the title bar. I think this would be what people would expect and want.

  13. Bastien says:

    Links B and C take the piss out of link A. So I guess the community is quite in tune with your guidelines ;)

  14. Ethan says:

    Keeping tabs within the application, rather than the window manager, allows for a lot of things that wouldn’t be possible otherwise. This is especially true in applications like a mail client or a feed reader; you might want to have multiple emails or feed items in tabs, but you typically wouldn’t want to have multiple mail clients or feed readers.

  15. Davyd says:

    The Calculator is a Gimp job (I watched SJR doing it). Though I worry that now someone is going to want this as a serious feature.

  16. Rob Taylor says:

    +1

    I’ve been thinking this for a while now as well. I’d like my window manager to allow me to group windows into ‘tasks’, with a tabbed web browser as a special case. I also want to be able to name the ‘tasks’ myself.

  17. jonner says:

    the totem one is a gimp job as well

  18. Chris says:

    Completely agree.

    The same goes for gedit where you can’t even have two instances open but you can add tabs.

  19. Fabien Chaillou says:

    Well i pretty much agree.
    We don’t need tabs everywhere.

    Concerning WM tabs support, the idea came out in compiz and exist right now, well it is not limited to the same type of app but it pretty much does the job :
    Just take a look at that video for a detail about the feature : http://fr.youtube.com/watch?v=1nK4_cH5sbM

  20. Matt W says:

    Compiz has a plugin that does this thing called window groups, which is most of the functionality of tabs, but it doesn’t render a tab bar all the time (you have to hover over the title bar to get a thumbnail set for all the windows in the group) and the UI for adding things is a bit clumsy (super-S on each window, then super-G to group and super-T to turn the group into a tab set).

    With better UI though, I think it could be a very useful feature. The most important being persistent display of the tabs.

  21. zith says:

    How about holding ctrl to select a few windows in the window list in the panel, then right-clicking them and pressing ‘group’, or something?

  22. wvengen says:

    Agree! How the interface should remains an issue, indeed. Maybe an extra button-thingy in the title bar (with an icon like a chain link, for example) that can be dragged onto another window would be an idea.

    I like the tab outline that appears when dragging a window onto another: aligning the title bar of the dragged application with the tab bar would add it to the tab, while dropping it elsewhere would just put it there like current behaviour.

  23. Simon says:

    Don’t personally see much need for it as a WM feature. Firefox is just about the only application I use tabs in, and that does a perfectly good (and cross-platform) job of a tabbed interface itself…

  24. Saviq says:

    Well compiz does tabbing quite fine :)

  25. Ty Rex says:

    We who like tabs (and even would want it to not be a joke, because it would actually be useful) agree with you. We would much prefer some kind of grouping in our Window Manager of Choice instead. It might even be something not-tabs (but please, not taskbar grouping! That’s like in Epiphany when you can’t get an overview and have to do two clicks to navigate). Tabs may even be the best paradigm we’ve got.

    There’s some kind of plugin in Compiz, that adds tabs, but it’s an unusable joke. And since many of us have moved on from Metacity, maybe Compiz is the best place for this. Both would be best of course. :)

    I think keeping it simple is the way to go, like the suggestion in answer #1. Though maybe I’d like the tabs at the bottom? I’m not sure. Also, applications that are natural candidates for tabs should be able to use this from within themselves if the user so wishes. I don’t want to have to manually collect all my Gedit or Firefox windows when I always want tabs…

  26. Fluxbox is the only WM I know which has tabs. I agree with you that this is ridiculous to re-implement tabs in every application, it would probably be better to have it done by the WM but I like to have my tabs at document level, (ie have the menu bar, toolbar and status bar in common) and I fear that doing it a WM level would mean having multiple instance of the application which would be slower.
    It would also require a lot of work to

  27. Fluxbox is the only WM I know which has tabs. I agree with you that this is ridiculous to re-implement tabs in every application, it would probably be better to have it done by the WM but I like to have my tabs at document level, (ie have the menu bar, toolbar and status bar in common) and I fear that doing it a WM level would mean having multiple instance of the application which would be slower.
    It would also require a lot of work to integrate it properly into application, like the choice Firefox give its user to open link in a new window or in a new tab (and the application would have to special case it if the WM support tabs or not)

  28. calum says:

    Yeah okay, I knew the calculator one was a wind-up, wasn’t sure about the Totem one :) But nonetheless, we are seeing more and more of our key apps switching to tabs, so the question is still a valid one…

  29. troll says:

    The only valid use case ever including GNOME and tabs is being drunk in a bar and having tab open. The other sort of tabs from all GUI’s on this planet should be nuked from the orbit.

  30. [...] Calumn is totally right that tab implementations at application level are an effect of the lack of platform MDI support [...]

  31. Peteris Krisjanis says:

    I think Nautilus having tabs as *additional* feature is nice thing. Btw, while everyone cracked a joke, Empathy tabs was very nicely done and even could work for me (but maybe not for others).

    Anyway, tabs done right are good thing, as they minimize ways to swith between data (in single app).

    One thing is hilarious though – that all this made lot of people nervous :) Propably tabs aren’t so loved, are they?

  32. It’s hard to tell when some of these developers are joking… I hope it’s april fools. Tabs have their place but not in every application.

  33. Feel free to raise Metacity bugs, if it wouldn’t be a complete rewrite. Are you thinking of something like twm?