Foreword: I wrote many articles in my Chinese blog (imtx.me), and I have a lot of readers.
Back to five years ago, when I first started my blog, many of my articles were just translated from the English articles.
After five years’ writing, I have a lot of my own thoughts, so most articles were written by me. A friend told me that it’s time to translate my articles back to English, to share with the people over the world.
So, here’s the first article not about Ubuntu Tweak. I don’t have a good written English yet, but I will improve. Just point out the grammar/word mistake, thanks!
As a long time Ubuntu user (about 5 years), I’m really happy to see that the release of Ubuntu 11.04. This is really a big jump! Unity is an innovation desktop shell which brings a lot of advantages to make the desktop life much more easier!
And I’m also a Mac OS X user, Unity has many concepts like OS X, such as “Application Menu”(or Global Menu) and Launcher (Dock). So I’d like to compare Unity with OS X, to see which design is better.
The first post, I will talk about the bad of application menu in Unity.
The application menu is first appeared in Mac OS. It can save the vertical screen space, and user can always reach the menu even they don’t watch it (if it can be consider as a feature).
The bad is: there will only be one menu showed in the panel, you have to click and focus the other application, then can click its menu, one more step then typical desktop (Windows, GNOME, KDE etc).
Is that all? No!
Application menu is not about saving screen space, it’s about a consistent way to access the application feature.
Let’s start from Pidgin and its shortcuts.
As you know, Pidgin has two kinds of window: one is buddies window, which you can choose who to chat. The other one is conversation window, this is the window which you can have the real conversation with your buddies.
Each window has its menu,when the conversation window is activated, the application menu will look like this:
So it’s the Pidgin’s main menu when the buddies window is focused.
“What’s wrong with that? It just works!”
You don’t get the point. Let’s see another screenshot, the Adium in Mac OS X.
Adium is an open-source IM application which shares the same protocol library from Pidgin (libpurple). In Mac OS X, application menu is associated with application, not window.
So no matter which the current focus window(conversation window or buddies window), the application menu will always be the only one.
See the highlight item: Quit Adium, I can always use the shortcuts (CMD+Q) to close the Adium, even when I’m chatting with my buddies in the conversation window.
But in Pidgin (also Empathy), I have to do an extra step: 1. use “Ctrl+W” to close the conversation window, or “Alt+Tab” switch to buddies window. 2. use “Ctrl+Q” to close the application.
If you don’t use shortcuts, it is much more inconvenience: 1. move mouse to click to focus the buddies window, 2. move mouse to application menu and click “Buddies” and “Quit”. Really a big mouse movement!
In the classical desktop, you just need to find the Pidgin buddies window, then click the menu.
I hope you understand my words. So here’s my conclusion.
As I said before: Application menu is not about saving screen space, it’s about a consistent way to access the application feature.
It means, I can do everything with the current application through application menu, just because it’s “application”. How can it be “application menu” if it is only show window menu?
I know most applications do not have multi-windows with different menus, so they just work with Unity’s application menu.
But Pidgin/Empathy/GIMP(2.6) are all frequent used multi-window applications, they need to be changed as a real application menu application to make the desktop experience more comfortable.
Of course, the best solution is to provide an API to set the real aplication menu, like the way AppIndicator does.
There’s much more work that Unity has to do, I hope the developers will focus on how to solve bugs and make desktop more consistent, not always focus on new features.
As an application developers, I found it is more important to provide a standard set of API then always hack on the source code.