Last week Mark Shuttleworth announced that Ubuntu Netbook Edition will have a global menu bar — a single menu bar at the top of the screen, instead of separate menu bars inside each window. This seems like a pretty simple change. But like many design changes, it’s more complex than it appears. And we’ll need lots of help in making it awesome.
Why we’re doing this
For 30 years or so, computer programs have often used a hierarchy of menus to provide access to lesser-used functions — functions that aren’t displayed directly in the interface as buttons, checkboxes, and so on. Because of its information density, a menu hierarchy also serves as a quick map of what functions are available in a program, regardless of how frequently they’re used.
There are at least half a dozen approaches to presenting a menu hierarchy on-screen:
-
A menu bar at the top of the screen. This was the most common early presentation, used in the Lisa, Macintosh, Amiga, and TOS. It has several benefits, most importantly being quick to use because of the large virtual target area, and saving space through showing only one menu bar at a time. Its main disadvantage is that you need to focus a window before using its menus (particularly an issue if you use focus-follows-mouse). In some themes, it is also difficult to tell which window the menu bar applies to.

-
A menu bar at the top of the window. This approach was popularized by Windows, and is currently copied by Gnome and KDE. Its main advantage is that it is obvious which menus belong to which window. Its main disadvantage is that it is slow to use.

-
A menu panel at the side of the screen. This was used in Nextstep, and has been continued in Gnustep. It has a speed benefit from the virtual target area off whichever side of the screen the panel is touching, but much less so than a menu bar along the top of the screen (since the target area is based on the title’s height rather than its width). The menu panel can also be dragged close to where you are working, but that movement itself takes time.

-
A hierarchical menu on secondary click. Gimp and XChat both do this, though both are just duplicating their horizontal main menu bar. This approach provides quick access to the top-level menus, but that’s outweighed by the unpredictable placement of context menus, compounded by the two or often three levels of hierarchy.

-
Nested pie menus. These are used in several games, and in the Songza Web site. They’re typically invoked by a secondary click, where menus fan out from the cursor position. With simple, icon-based menus the pie arrangement is rapid to use, because menu selection gestures can be learned and repeated. With more complex menus, though, it quickly becomes unworkable to present the text of pie menu items in a compact and readable way.

A pie menu based on the one used in Songza. -
No menu bar at all. Microsoft Office, Internet Explorer, Google Chrome (except on the Mac), and Chrome OS have gone in this direction. It saves the most space, and has the advantage that an individual application can list its functions in a way that best suits its feature set. The disadvantage is that for an application of any complexity, trying to avoid a menu bar just litters pulldown menus throughout the interface, and inconsistency makes the overall mental model more complex. For example, in Microsoft Word 2003, Microsoft Publisher 2003, and Microsoft Internet Explorer 6, the “Find” command was in the same menu in all three applications. But in Microsoft Word 2007, Microsoft Publisher 2007, and Internet Explorer 7 and 8, that same command is in three different menus.
Of these approaches to menus, which is best depends on the device. For example, a gaming console might use pie menus for most commands. And a well-designed touch-screen interface would have no menu bar at all (as both Apple and Microsoft have demonstrated).
But on a netbook, space is at a premium, people use feature-packed applications, and pointing is done with a touchpad or mouse. So it’s pretty clear to us that a single menu bar at the top of the screen is the right choice.
The problem of toolkit proliferation
We face several challenges in implementing the unified menu bar. The biggest of these is toolkit proliferation — the wide variety of toolkits application developers have used in writing applications that run on Ubuntu.
On Windows, there is one prominent toolkit, creatively named the Windows User Interface library. Microsoft and other application developers often use custom controls, but in general, when a new version of Windows comes out with a new theme, most applications inherit the new appearance automatically. The developers of applications that don’t use native controls — such as Firefox and OpenOffice.org — bear the responsibility of keeping up with new Windows versions, or pay the price for looking strange.
On Mac OS X, there are two widely-used toolkits, Cocoa and Carbon, and Apple tries to make them look and behave identically. So when Apple makes a change to the toolkit design — like tweaking the way selection works, or making menus searchable — they can make that change in two places, and it applies automatically to nearly all Mac OS X applications past and future. Again, developers of applications that don’t use native controls — such as Firefox and Skype — have to keep up.
With Ubuntu, we’re at a disadvantage, because we have four prominent toolkits . Prominent in that they’re used by applications that Ubuntu installs by default, or that people often install afterwards. There’s GTK, as used by the Gnome environment and many other applications. XUL, as used by Firefox, Thunderbird, and a few others. VCL, as used by OpenOffice.org. And Qt, as used by KDE applications like Amarok. And those are just the common toolkits!
This mixture has made life difficult for us whenever we’ve tried to implement a consistent Ubuntu theme. But it also means that if we want to do anything cool at the toolkit level, we have to get it implemented four times over — in GTK, in XUL, in VCL, and in Qt.
For the menu bar, Canonical’s Desktop Experience team will be working to ensure it works with GTK and Qt applications. And we’ll be looking for help to make it work with XUL and OpenOffice.org applications. Mozilla and OpenOffice.org applications already use the native menu bar when running on Mac OS X, so it should be possible to adapt some of that code.
Tackling the corner cases
Besides having to implement some of the menu bar several times, there are other tricky issues we need to deal with.
Many windows currently don’t have menus: for example, Open and Save dialogs. For these, we’ll introduce a fallback set of minimal menus so that the menu bar doesn’t look weirdly empty when those windows are focused.
Some windows that don’t have menus would do so, if they knew those menus were going to be presented in a separate menu bar: for example, Chromium browser windows should use the same set of menus on Ubuntu Netbook Edition as they do on Mac OS X. For these, we’ll introduce an API so a program can tell whether a separate menu bar is being used.
Some windows have a “Full Screen” command that expects to hide the panel while still showing its in-window menu bar: for example, Inkscape and Gimp. For these, we need to work out a standard full-screen mechanism that retains access to the menus.
And so that it is obvious which window’s menus are being shown, the Ambiance and Radiance themes will need to do a much better job of distinguishing between focused and unfocused windows.
Most of these issues are covered in our specification for the menu bar. We invite you to review it and post your comments, here or on the Ayatana mailing list.
How you can help
To make the Ubuntu menu bar work well, we’ll need to do lots of testing.
First, we need to check that the menu bar is presenting menus accurately — the right text, the right icons, the right keyboard equivalents, the right sensitive/insensitive states. For this, we’ll provide a way to display menus in the window’s menu bar and in the Ubuntu menu bar simultaneously, so you can compare them.
Next, we need to check that the window is laid out correctly once the menu bar is removed. If a window embeds another control into — or next to — its menu bar, that program may need tweaking. Unlike the notification area transition, though, we shouldn’t need to make many changes. Most applications will just work.
So you can help with this testing, we’ll provide a way for people to install the Ubuntu menu bar on standard Ubuntu, not just on the Netbook Edition. We’ll post here later with advice on how to get involved.
Accept no imitations
Finally, there’s been a bit of eye-rolling lately about how Canonical’s Design team seems to be pushing Ubuntu towards imitating Mac OS X. First the purple background picture, then the window title bar buttons, and now the global menu bar. Whatever next? So, a few words about that.
There are some parts of Ubuntu that are, probably, too much like the Mac. For example, the flow of the login screen is very similar to the Mac equivalent, and could be a bit more efficient. On the other hand, there are other parts of Ubuntu that are probably too much like Windows. For example, many settings windows have two close buttons, like they do in Windows; it would be more sensible if they had just one. As with the title bar buttons, these design details did not originate with Canonical’s Design team; they came from elsewhere. But the purple desktop background? Yep, we’ll take the blame for that one.
Our goal is not to make Ubuntu imitate any other OS; our goal is to make it better than any other OS. As we continue to improve Ubuntu, it will become more like Windows in some respects, and less in others. More like Mac OS X in some ways, less in others. More innovative in some ways, and less in others. We’ll try always to do something not just because others do it, and not just because others don’t do it, but because it’s a good idea.
Interesting post, thanks mpt. I will be interested in playing with UNE, and seeing how well the new menus work out.
I appreciate your final comments about the mac-a-like-ness of recent releases of Ubuntu. I don’t think it’s the fact that Ubuntu is looking more like OSX which grates. It’s more the flat refusal by many at Canonical that the similarity is there at all.
It’s obvious to anyone who owns a Mac and uses Ubuntu that the two are similar. Not just the logon screen you mention, but nautilus (eject icons), user switcher, mono ‘systray’ icons and so on.
I personally don’t mind that we’re taking cues from OSX, I’d just ask the design team to be _honest_ with us rather than fob us off with “nahh, can’t see it myself”.
Don’t take any blame for “copying” UI patterns from OS X/Windows – if everyone were supposed to re-invent the wheel, we’d be getting nowhere.
I fully agree with Tor. Iterative improvements are what lead to great software, not starting from scratch.
WoW , simply wow.
Many people dont realize that the *design team’s* changes are changes which are dissected and throughly planned.
But this planning and effort wasnt conveyed openly.
Its great to see that you’re taking the extra efforts to blog again and communicate ahead.
Keep up the good work.
I look forward to testing this. I have a question: Are there any plans for an Application menu, like in OS X? I couldn’t find any mention of such an object in your specification. There are a number of reasons you’d want to introduce this into your unified menu:
1. It enforces a neat separation between commands pertaining to the application and commands that act on the focused window. So, for example, instead of Preferences confusingly being in Edit (or Tools), it would always go under the application name.
2. The panel would look more logical: Ubuntu logo > application name > document name, where each item calls its own menu.
3. Firefox and OpenOffice.org both expose an Application menu on OS X. If you’re going to reuse that code to expose the same menu on Ubuntu, you’ll have to deal with that part of the menu anyway.
4. It will ensure a neat upgrade path to GNOME Shell, which will also have an Application menu.
This wouldn’t even require applications to be modified. For legacy applications, the menu can automatically relocate common application-wide menu items, such as Preferences, About…, and Quit.
Has this been considered?
I’d take sloppy mouse focus over a global menu bar any day, which is why I don’t really like using Mac OS X (and now Ubuntu Netbook edition).
after reading this, i truly feel we’re going somewhere, although i believed that was the plan in the first place. great job folks
Sugar doesn’t /actually/ have pie menus. It was a design suggestion by Don Hopkins that never quite got implemented: http://www.donhopkins.com/drupal/node/128
I do suggest taking a look at the Human Interface Guidelines for the Sugar interface: http://wiki.sugarlabs.org/go/Human_Interface_Guidelines
They aren’t completely implemented in Sugar, nor desirable in some regards, but a well thought out document all the same.
–Seth
–sethish.com
David Regev: Excellent question. No, we don’t plan an application menu, for four reasons.
First, it would take up valuable width in the menu bar, especially on a netbook.
Second, because that width would be different for applications with names of different lengths, the common “File” and “Edit” menus would jump around, making them a little slower to use.
Third, the contents of the Mac’s application menu is mainly things that people don’t care about (“About”, “Preferences”, “Services”, “Hide Others”, “Quit“). There’s some value in siloing these away from the useful menu items, but reserving a whole menu for them (and the first menu, at that!) is giving them undue prominence.
And fourth, introducing an application menu would make adapting Firefox, Chromium, and OpenOffice.org easier — but it would involve an invasive rearrangement of menus for every other application, which the developers of those applications probably aren’t interested in.
Many thanks for detailed explanation. Although I hope global menu will not be default on desktops, I think on small screens it’s only way to go.
Mark mentioned about “combining title and menu in a single panel” ( http://www.markshuttleworth.com/archives/359 ). Is it going to look similar to this: http://img294.imageshack.us/img294/310/global.gif ? Sorry for quality, I’ve just made it quickly in GIMP.
Thanks for great post. Although I hope global menu will not be default on desktops, I think on small screens it’s the only way to go.
Mark mentioned about “combining title and menu in a single panel”. Is it going to look similar to this: http://img294.imageshack.us/img294/310/global.gif ? Sorry for the quality, I’ve just made it quickly in GIMP. :)
Thanks for your post. I was rather critical of Canonical during the Lucid cycle for a lack of openness in discussing UI changes, and am very glad to see that trend reversing itself for Maverick.
As a netbook user, I’m excited to see this change! I’ve tried the existing global menu bar applet for GNOME, but as you cover in this post, there are a few cases that it doesn’t consider. I look forward to a more polished and better-designed (especially from a programming point of view) interface.
Wow… I am glad I switched to Arch.
Jesse: Word.
@Jesse, Kristofer M White
Well thank you for your informative and non-troll-like comments, you really have enlightened me
@mpt
Good blog post, I am always excited when I see these as I find what you do really interesting, keep it up :-)
Matthew, reading https://wiki.ubuntu.com/MenuBar it seems a different “panel” will be available in Netbook edition, uPanel (or ubuntu-panel). Can you confirm this? Or it’s simply the gnome-panel “re-branded”?
@Andrew: No problem :) All in good fun. On a serious note, I think my complaints stem more from decisions being made for the user. I understand that, as Shuttleworth has said, he wants to make sure that “One of the really strong values we have is that two users of Ubuntu should, by default, either be having the same experience, or be expert enough to understand why they are not.” (citation:http://www.h-online.com/open/news/item/Shuttleworth-No-default-GNOME-Shell-in-Ubuntu-10-10-995185.html). Because of this, ubuntu will always be a very controlled experience right out of the box. That’s not for me. I’ve used far too many distros in my time (started with Slackware — had to do a LOT of learning on my own right off the bat) to deal with that. I respect him for having a vision for the product and going it. I just don’t want it for me. Many say it’s a cop out when the topics of distros come up, but my stance is that we have many to choose from, find one that suits you. I may disagree with the decisions of Cannonical on things, but will continue to support them (*gasp* Yep, you heard me right, Jesse) as they are (from what I can gather) the largest movement in a non-enterprise base distribution.
Thanks for the update!
Jeremy: Canonical won’t be investing in making the menu bar compatible with focus-follows-mouse, but I have specified how it could work if anyone else wants to implement it. https://wiki.ubuntu.com/MenuBar#focus-follows-mouse
mmiicc: We’re not sure how a merged title bar and panel will work yet. Thanks for that mockup, it’s a helpful visualization.
if you use the global menu, you will have no horizontal space to the windows peek and systray. whit no windows peek the caption bar should come back and you lost vertical space.
I’m suggesting to put the menu into the windows peek, hidden, and only show it on left-clicked or alt-pressed.
The windows peek was a great ideia and I hope it will be improved yet. the controls should be ported to the left and the icons to right, you should can pin apps, you should can tile windows through it.
thx ur attention,
yzarc, I have no idea what you mean by “the windows peek”. Maybe you could post a screenshot somewhere?
As for the “system tray”, we’re replacing it with a set of menus that will take up less space overall. http://design.canonical.com/2010/04/notification-area/
So, why re-invent the wheel when you can help develop gnome2-globalmenu ?
is there a date for the renewal of the Ubuntu and Canonical websites? it is more than awkward pressing “learn more about UNE” and ending up here (http://www.canonical.com/projects/ubuntu/unr)
and this is just the tip of the iceberg.. there are not-too-many more in the Ubuntu website.
cheers
if you use the global menu, you will have no horizontal space to the windows peek and systray. whit no windows peek the caption bar should come back and you lost vertical space.
I’m suggesting to put the menu into the windows peek, hidden, and just show it on left-clicked or alt-pressed.
The windows peek was a great ideia and I hope it will be improved yet. the controls should be ported to the left and the icons to right, you should can pin apps, you should can tile windows through it.
thx ur attention,
sorry my double post :(
ans sorry my bad english too,
the right name is windows-picker-applet
I think it is safe to say that a portion of normal desktop user will also want this. I for one have 900 screen lines and find a global menu desirable.
Mark said that this will be possible for testing purposes, but I hope it will be available for making it a permanent fixture on regular desktops too.
Sounds promising!
Hi Mark,
Just wanted to say that it’s great the concept so far doesn’t depend on running any particular window manager like gnome-shell does.
Just as a question: why are you using mutter when compiz is much faster (since it doesn’t have any clutter overhead). I did some tests with compiz and unity on my eeepc901 and it is far smoother with compiz as a window manager.
about distinguishing between foucsed and unfocused window: could we extra highlight on focused window when mouse is over menu?(for example some glow around the window like in KDE, but could be bigger/animated to be more obvious). That won’t solve everything but should help.
It is very heartening to see a solid design vision for Ubuntu appearing, however initially limited in scope, rather than taking as-is the stock upstream design. I *actually* like this – it’s Ubuntu’s product, so they *should* develop their own interface patterns if they choose.
However, is Ubuntu prepared for the inevitable upstream conflict? I say this because it is clear that their UI development is at odds with upstream’s GNOME Shell initiative.
While I understand that politically, Ubuntu will try to ease tensions with upstream and smooth things over, at some point it must be directly addressed that Ubuntu just isn’t going to agree with upstream’s design decisions. This can’t be glossed over forever – at some point the passive aggressive approach will become pathological, or there could even be some explosive schizm down the road.
Expectations for how Ubuntu’s differing design initiatives will communicate with upstream should probably be established early, to prevent anger later down the road.
But I imagine you guys know this stuff as well.
You mention that you will initially be working on getting Gtk and Qt applications working with the unified menu. Does that include wxWidgets applications?
I really hope this is a lot better idea than the Plymouth fiasco which appears to be based on what still does not work under Fedora for a large plurality of users.
aperson, the architecture of gnome2-globalmenu is such that it can show neither the menus of a Qt application in a GTK panel, nor the menus of a GTK application in a Qt panel. Our architecture can do both.
Seth Woodworth: Thanks for that correction. I’ve updated the post.
Your logic is strange. With global menu, ones hand with mouse has to do far longer way. Thousands times daily. You call it “most importantly being quick to use”.
With local menu one does fewer mouse movements, hand with mouse does shorter way. You call this “Its main disadvantage is that it is slow to use.”
To click global menu, users eyes have to leave current window, switch focus to global menu, then LOOK UP the window. It requires additional concentration effort from user. Thousands times daily. Which makes the user more tired at the end of teh day.
With local menu, users eyes don’t leave the window and don’t look it up again. No additional concentration effort. Saved unneeded efforts. Thousands times daily. AT the end of the day user is not as tired as with global menu.
The mentioned effects are already noticeable on 15″ display, even more on 17″, and make users eyes exhausted on 24″ display.
These effects migh not be noticeable on 10″ or 12″ displays. Just because users maximize the windows, and at any time only a single window is visible on the screen. Having two menues can be really a waste of the space. Even in this case the answer is not obvious, which menu to eliminate – local or global one?
Mac has many good design ideas. The global menu is one of the exceptions. GNOME should avoid known design problems like this one.
Andy, the reason it is faster is that the greater distance — even if it is three or four times as far — pales into insignificance compared with the much greater target area. The target area for a menu title at the top of the screen is on the order of a hundred times larger than for a menu title inside a window.
I have a 30″ flat panel at 2560×1600 — I hate the single menu bar with the mac and I hate it with Ubuntu. With multiple windows open during development, especially with the ones toward the bottom right, it is visually and physically tedious to deal with a single menu bar at the diagonal opposite end of the screen. Ugh. It should at least be a preference.
You’ve been drinking the kool-aid. You’re disputing Andy’s argument with numbers that I seriously doubt for larger displays. Perhaps with your workflow, but try a scenario with a large number of windows open on a large display. I’m with Andy on this. But this is kinda like the spaces vs tabs debate — seriously, why can’t we set our own preferences (and agree to disagree)? ;-)
The size of the target area has hardly anything to do with the size of the display, and absolutely nothing to do with how many windows are open.
The reason it shouldn’t be a preference is that then application developers wouldn’t be able to rely on it. With a consistent global menu bar, for example, the width of a window’s menu bar is no longer artificially restricted to the width of the window itself. If it was optional, that wouldn’t be true, or the menus would wrap or overflow unpleasantly. And with a consistent global menu bar, a document window’s menus can be replicated for secondary windows — like a Find/Change window, or an About window — so that more mouse actions and keyboard combos work regardless of which window is focused. If it was optional, developers would need to turn that off when the global menu bar wasn’t being used.