细数Unity的好与坏(一):蹩脚的全局菜单
这个周末,我们HZLUG的活动将围绕着新发布的“Ubuntu 11.04”(当然还会有其他节目,到时请看活动通告),于是,这段时间我也深度体验了Ubuntu 11.04,特别是Unity界面。这个堪称Ubuntu发布至今用户界面上最大的改变(就像GNOME 2->GNOME 3一样),带来了全新的操作体验,但是用户对它的褒贬不一。
我的感受也差不多,一方面我已经习惯了Unity的一些高效率操作,一方面还得忍受它的不稳定和各种不一致体验。于是接下去我会写一些文章,从用户界面和交互的角度来分析Unity优秀的地方和不足的地方。
第一篇就来吐槽一下它的全局菜单(Global Menu)
全局菜单的最初设计来自Mac OS X,除了能省下一点空间外,还能让人闭着眼睛就能点到菜单(如果这也算特性的话)。坏处是,同一时间只有一个应用程序的菜单会显示在上面,因此如果要点选非活动的应用程序,则必须得先激活该应用程序,再点击菜单,比不用全局菜单的桌面要多一步骤。
因为我平常操作菜单比较少,用快捷键比较多,所以还是比较喜欢引入全局菜单的。但是Unity的全局菜单让我失望了,具体的说是应用程序的集成性还不是很好。举例为证:
大家都用过Pidgin来聊天,Pidgin的窗口主要分两种:联系人列表窗口和对话窗口。这两个窗口呢,都有不同的菜单。
比如看下图,你应该不难发现是哪个窗口,这就是对话窗口聚焦时,全局菜单的样子。默认可以用“Ctrl+W”来关闭该窗口。
那么这个则是联系人窗口聚焦的时候显示的全局菜单了,可以按“Ctrl+Q”来关闭整个应用程序。
看出问题来了没有?
Unity的全局菜单的致命伤,便在于这个“假全局菜单”!
Unity的全局菜单,实际上并不是应用程序级的,而是窗口级的。如果你知道它的实现过程,就知道它是Hack了GTK+,通过特殊管道,将原本显示在窗口里(GtkWindow)里的菜单,动态地搬到面板上去而已。
API级别,依然没有全局菜单的支持,开发者在开发应用程序的时候,依然只是把GtkMenu放进单独的GtkWindow进去了。
说了这么多,相信你也知道这个问题的具体表现了:
当我在会话窗口聊天时,如果此时我想用快捷键“Ctrl+Q”关闭整个Pidgin,不好意思,办不到~我必须得用Alt+Tab切换至“联系人窗口”,然后再按Ctrl+Q才能把Pidgin关掉。
对Unity来说,全局菜单除了省下了一点点空间以外,带来的不方便更多一点。
来看看Mac OS X真正的全局菜单是怎么工作的,以同样使用Purple多协议的聊天工具——Adium为例。
首先,无论是在聊天窗口还是联系人窗口,全局菜单始终是那么一条,这里可以用一致的快捷键来操作各种内容。
最一致的要数Mac OS X的“CMD+Q”快捷键了,无论在哪个应用程序,这都是统一的关闭捷径。只要当前的应用程序是Adium,那么无论我当前聚焦的是哪个窗口,只需要按下“CMD+Q”,Adium便退出了。
这才是全局菜单应该表现出来的行为——全局菜单的运作机制,一部分是视觉上的感受,一部分则是由统一和一致的快捷键带来更高效的操作。
Ubuntu 11.04 Unity学到了全局菜单的“形”,却没有学到“神”,反而在一些操作上变得不方便。这方面,还需要不断加强和改善才行啊。