* this was previously published at: GNOME Documentation Project: http://unix1.hials.no/~kp/gnome/ --| INTERFACE DESIGN > A SINGLE MENUBAR |----- >> WHAT? Give me the summary. A SINGLE MENUBAR AT THE TOP OF THE SCREEN that changes according to the current context (window) instead of a menubar for every window. Setting this as a User Default will improve Linux's ease-of-use. Placing a single Menubar along the top of the screen: 1 - Makes it faster and easier to hit. (no mouse overshoot to slow things down) 2 - Eliminates clutter in the interface. 3 - Reduces ambiguity (and hence - user error). --| DISCUSSION |--- >> LINUX MENUS WORK GREAT NOW. >> WHY SHOULD WE DO SO MUCH WORK TO CHANGE THE ACCEPTED DEFAULT? In programming, if you compute a static variable within a loop - it is highly innefficient - it slows down the loop. You optimize code by pulling all the computes you can out of the loop and processing externally. Interface design is the same. If a user has to click: A, B, C three hundred times a day - it would make him 3 times as efficient to collapse those three steps into a macro and execute with one keystroke. Making things less steps for users optimizes the UI just like computing static variables outside the loop optimizes code. Since Menus are one of the most frequently used items in an operating system, optimizing something small in this frequent behaviour equates to a Big savings for the user over time. Therefore getting the menus right is one of the most crucial and fundamental UI decisions that must be made by those implementing a GUI. Linux currently imitates Windows' menubar implementation of putting a menubar in every window. UI studies show this is not the optimal way of implementing menus in an operating system. Linux can beat Windows in menubar GUI by providing the option of a single context-sensitive menubar. There are several good reasons for doing this: 1 - TARGETING CONSTRAINT How easy it is to hit a target - virtual size. 2 - CONSISTENT PLACEMENT How easy it is to remember "where" a target is. 3 - SIMPLICITY KEEPING FOCUS Elimination of extraneous controls that are not relevant to the current task. --| 1 - TARGETING CONSTRAINT |------- The most important thing you can do for a user in Menubar implementation is to reduce the possibility for error in selecting Menus. This can primarily be achieved by reducing the number of dimensions along which a menu is "targetted". Targetting means that in order to select from a menu, you move your mouse in X and Y axes and have to hit or "target" - a certain point in order to select from that menu. When targeting an area of the screen for menus, obviously the larger the target, the easier it is to hit -- but then the more wasteful the screen real-estate. Since we don't want to have huge menus, there has to be a way to make the targets SEEM larger. One way to increase the virtual size is to "constrain" the selection to prevent the mouse from overshooting the menus. When the menubar is located along the top of the screen, menus seem "infinitely tall" because the menubar along the top edge of the screen implicitly takes advatage of the screen edge mouse constraint. Therefore menu hits have a much larger virtual target, and become one-dimensional. The implicit menu pinning provided by locating a menubar along the top of the screen guarantees that you can't overshoot menus.
In contrast, placing the menubar inside a window allows an additional axis of freedom for menu selection, and users must adapt to the system by slowing down their menu selections in order to avoid overshooting the menubar. If you watch someone try to hit a Windows menu, they often overshoot, then pull back, and then zero in on the menu they want in a sort of spiral or zig-zagging in on the target (or they are forced to move slower). It is much easier to "fall off" the menu bar in this case, since it is always a two dimensional move.
Changing the Linux menubar GUI to a single menubar will confer the advantages of increasing user confidence and speed in menu selecting. This is a way that LINUX menubar implementation can be better than the Windows menubar implementation. --| 2 - CONSISTENT TARGET PLACEMENT |--- The second issue in hitting a menu target is whether it is stationary or not (in its position). If the object is always in the same place -- then the user can become "programmed" to automatically go to certain places on the screen with the mouse, or their eyes without having to think about it. So by it being in a predictable place, the user can develop a "reflex" or what is called "muscle memory" -- because the muscles seem to act without intervention, you just "think" of a menu, and the mouse is already there. A menubar in a single predictable place - the TOP of the screen takes advantage of this muscle memory. Making the menubar's single consistent placement at the top of the screen makes sense since westerners tend to read from top-left to bottom right. It can be counted on to always be in the same place, and the most common menus (File, Edit) are in the expected position (and order). Muscle memory is maximized, target placement is static, and users are very happy once trained. Windows menus are never in a predictable place, because they move with the window. Zooming the window will put the menubar near the top of the screen -- but you can not guarantee that your window will always be zoomed, so you can't really build your reflexes as reliably. With a single menubar, Linux users will be happier and more productive users, because objects in the GUI will follow the same persistence they have already learned in the real world -- stay where you left them, and menus too are always in the same place. Users can expect and depend on them being in a consistent location. This conforms to good UI principles. --| 3 - SIMPLICITY KEEPING FOCUS |--- 'Perfection is achieved not when there is nothing more to add, but rather when there is nothing more to take away.' (Antoine de Saint-Exupery) You can increase the apparent simplicity and focus of an OS simply by consolidating five menubars into one. Instead of an additional menubar for every open application window, we can simplify the design by consolidating them into a single menubar that changes context (i.e. the menubar changes with the active document window). Focus is when the UI changes to provide only the tools needed for the current context or task - while those things that are inappropritae to a given task fade into the background. This sense of appropriateness is what makes a UI more Elegant. A single menubar instead of many conforms to the first essential principle of good UI design: 'everything should be as simple as possible, but no simpler'
SUBMIT AN ARTICLE posted: november 3, 1998 revised: march 23, 2005