What Unity and GNOME 3 should have been

April 2011

Is this really the best we could come up with?

I'm familiar with all the major Desktop Environments, KDE 3 and 4, GNOME 2 and 3, Unity, Windows XP and 7, OS X. So you all know where I'm coming from, I prefer the user experience of  the Windows and OS X UI to the others. I also believe that apart from marketing and the lack of some certain big companies releasing commercial software for Linux the state of interface design is the most important reason market share is as it is now...

Having used GNOME 2 the most of all Linux DEs naturally I'm feel a lot more comfortable using it than the new entrants to the game. But it's more than just that, I easily adapt to new interfaces and I like change - if it is for the better. However I believe that both GNOME 3 and Unity are heading the wrong directions. Both face the difficulty of making a good looking, simplified and partially touch ready interface that still should work great with "legacy" applications and mouse and keyboard based input and one that's suited for every kind of user, newbs, intermediate and the powerusers or whatever you want to call them. I think trying too much at once is were they both fail.

There's already been said a lot about the problems in Unity and GNOME 3, and I'm sure much more will follow once they hit the "mainstream" users when they are be shipped in stable distro releases. Criticising is easy they say. So here's my take how I'd do it.

My goals are simple... What would the best interface look like and feel like, the one that makes the least trade-offs, that's intuitive, fast, helps the user get things done, yet gets out of their way? It's an interface for keyboard and mouse, no fancy tablet, no smartphone, no one fits it all solution but solely tailored towards PC and laptops though one that is flexible enough to be adapted for multi touch input as well. Targeted users should be everyone who knows how to hold a mouse, from beginner to pro.

Scope

What elements do we have to deal with in a "desktop environment" on a high level?

The Taskbar

One interesting thing to note here: it's "window" manager but "application" launcher.  Reminds us of taskbar (KDE, XP, GNOME 2) vs. Dock (OS X, default Win 7, Unity, GNOME 3).

I don't think that's and either or question. We need to manage applications both at the window level and at the application level. There should be a way to hide all windows of an application at once, bring them all to foreground at once or move to another workspace3 but there also should be a simple way of directly switching to a particular window, fast. OS X, GNOME 3 and Unity have Exposé for that, Windows 7 pops up a window preview from the task bar which is slow (which is why I always enable the classical XP like layout there).

For switching between windows the taskbar is the best solution, every window is one single click away (with Expose it's 2), locations are more predictable than Expose. With Expose you get larger targets but a taskbar is at the screen edge so in those term it's probably a draw.

An additional benefit is that if it's alway visible you get a quick overview of what is currently running on your system, usefull when running off battery or whenever you run stuff in the background like torrent client, IM, VOIP... so you can easily check if you forgot starting them, or if they failed to start, or silently crashed at some point... or just to avoid opening the same folders and documents multiple times.

Clicking the left lower corner button could trigger an expose like view, all windows scaled so they don't overlap, virtual desktop controls for those who use that  (I never do, so I can't provide any ideas here). Expose has certain benefitst over textual taskbar buttons, especially when working with images. But again it doesn't have to be either if you could have both.

An always visible taskbar takes up space, a major concern on small displays. However I believe space at the bottom of a screen is less valuable than at the top. Since the taskbar is less often in the user's focus it only makes sense to put it somewhere where it doesn't get in the way of the application one wants to use. Envision a a netbook sitting on a desk, things at the bottom have a worse viewing angle than at the top. Secondly all applications are "top heavy", that's were most of their interface elements are put, having a bottom bar as opposed to a panel at the top puts the content more in the middle of the screen.  So, if we are going to have a panel visible at all times it should be at the bottom, not the top.

But if all the bottom panel does is WM functionality there could be an "intelligent autohide" mode: When multiple non-maximised windows are active it would be shown or when you invoke alt+tab it would pop up but when you are working in a maximised window it would simply fade out automatically. In order to reduce toggling it by mistake not the lower screen edge but only the corners would activate it again.

Info Area

What about clock and info area? It sure would be nice to have that visible all the times independently of the "window bar". A possible solution for that: If the window bar is hidden the clock+info would stay in the lower right corner as a transparent overlay over the currently active window. Given that applications are designed with our way of reading from left to right starting from the top the lower right is often unused anyway. If not it could be click through and fade out completely on mouse hover.

The area should stay small of course and not introduce any unnecessary clutter, a combination of the design of GNOME 3 (panel  and bottom info bar) and the Windows 7 design would be the most fitting: Don't show an icon for every single application that thinks it's so important, show notifications in a way that doesn't interrupt your workflow and in the worst case steal input focus.

Why not a sidebar like Unity?

That's simple, for small screens I have a better solution (no panels at all). A horizontal panel looks better (or why do you think Apple puts that stupidly large dock on their little MacBook Air wide screen displays if there's a sidebar mode available as well?) and since it is going to contain text - which is absolutely necessary for a window level switcher- it's the only sensible choice anyway. A sidebar containing text labels takes up a lot more space and is a lot slower to access than a classic taskbar (height vs width of the targets).

The Application Menu

The quickest way to start any application that isn't frequently accessed (via keyboard shortcut or large icon on the desktop/dock/menu) is to type its name and press enter. For such search box + results a design that puts the box at the top of the results makes the most sense.  For right handed people I think the left lower and right upper corners are the fastest corners to access because one only needs to swipe ones wrist, for the other two corners one has to move the whole arm. Naturally I'd put the menu in the upper right. Having window controls on the left side, together with all the rest of the application interface elements starting left means that the upper right corner is free anyways. I think it needs to be a proper button, a hotcorner is too easy to access by accident.

Recently accessed documents, applications and settings would be listed in that menu as well. I'd organise them in a pie like menu with the target area increasing the further away we get from the menu button. Search box has focus and is "intelligent", it sorts results by how often they are accessed (have a look at Quicksilver for OS X, the most awesome launcher I know). Logout, Shutdown etc. would go there as well.  I don't think there's a better place to put them (and let me tell that hitting start to shutdown in Windows is pretty sensible. In *NIX I'd always start the "shutdown program"...)

There should also be a way to browse all applications, to discover them or in case the keyboard isn't used for whatever reason. A drop down menu inside the search box could provide a list containing all applications sorted by category.

Mockups

To make the whole thing a bit less theoretical, some pictures... MS Paint FTW!

looks like KDE4

The basic layout very much reminds of KDE4 but then that's just from the outside.

Pie menu

The "startmenu", a pie with three segments, one for docs, one for apps and one for logout/shutdown and maybe some settings like brightness and volume. Should support clicking the menu, dragging the mouse and then releasing the mouse over target to launch that.

Here it fills the whole screen, it doesn't have to be like that. Also I'm against making such menus transparent, because that introduces too much visual noise and therefore reduces speed. Start typing anything and the search results overlay will appear. Another advantage of this and spotlight's design over KDE/Windows: the search results can take up the whole screen hight.

fullscreen

Taskbar hidden.

The top menu button doesn't have to be large, about the size of the Windows 7 close button is easily enough and would fit into every kind of titlebar layout. I say this with confidence because in all the years having closed maximised applications in Windows without even looking I never missed once.

Expose

The "taskbar" and "exposé" view:

Color codes for different applications, like in Windows 7 windows belonging to one application are next to each other on the task bar, though only one icon per application which could stick out a bit like the Windows Vista startbutton. Clicking on the icon brings all windows of the application to foreground, context menu/drag click up menu to close the whole application.  Minimised windows are separated from the others and appear directly over their task-button.

The upper right close buttons are wrong, they should be on the left like in normal view. Basically it's a dock and taskbar in one. Apart from providing the most functionality this is the most userfriendly approach. Because people switching to something else most likely are either using Windows or OS X. This design makes sense for both kinds of users. Also it works with any application no matter for what desktop environment it was written for.

Hardware Acceleration shouldn't be a requirement

Another advantage of such setup:

Unlike Unity and GNOME 3 no hardware acceleration is required for this proposed desktop. Only the window scale view requires it and that is just an additional/optional view because the taskbar+dock provide all the functionality as well already.

One thing Unity got right is that there is no need for titlebars in a maximised application on a small screen. Chrome and Firefox on Windows did away with the title bar as well. For those applications that haven't adapted yet I think the Unity design should be shamelessly copied.

Open questions

In the Chromium example we see a problem with the  info area overlay in "fullscreen" mode: Chromium  sometimes puts the url preview into the lower right corner as well and unlike in other cases (e.g. its download bar) you can't move the mouse over it to reveal what's under the info area. There are a few possible solutions that would require modifications to Chromium like putting the url preview on top or next to the info area or the info area disappears temporarily whenever something pops up there. Alternatively one could make the task bar a narrow strip just as high as the clock font like the Android and iOS info bars at the top. It doesn't have to be clicked on after all (though unlike touch interfaces it could). But do we even have to have that information visible all the time? The clock could be put into the menu button and the rest hidden in the menu, taskbar or both. Whenever something needs your attention it would fade in like the GNOME 3 notification system. Remember that this is only optional and for small screens anyway.

Of course there are unsolved questions but you get the idea. Unity and GNOME 3 don't got far enough to save screen space for netbooks, both still have a full panel at the top. On the other hand they reduce usability by increasing mouse clicks for screens where one could afford a full panel just for window switching and or a proper menubar instead of a hidden one.

Global menu

We covered the dock/taskbar, ways of starting applications and approaches to minimise screen clutter and maximise space available for applications. What I didn't go into was the menubar discussion. I strongly believe the menubar in Unity is the wrong  approach but if it turns out people want it my minimal Desktop design would actually allow an optional global menubar because the upper screen edge is free. Optional in any case would mean it doesn't have to be there for applications where it's not required such as Chromium.

Window Manager should remember size and position

What really puzzles me about both Unity and GNOME 3 is that the most central and important task of any DE, the window management task hasn't been improved at all over Metacity from GNOME 2. There is still no way to reliably make applications remember their position and size without any hacking around which then still fails for one or another reason:

It's apparently a lot more difficult to get it right than it sounds. The WM needs to handle different windows of one application, say Trash and Home Folder and it needs to gracefully handle opening two of the same window (i.e. not open them exactly on top of each other but "cascaded" so you can grab either titlebar and move them around quickly). Windows 7 fails that test, it can only remember one size and position for all Windows Explorer windows. GNOME fails completely as it expect every single application to handle that task not only reliable but in a consistent fashion with every other application. What really gets me though is that they act like it's not there fault and they come up with the most stupidest excuses if anyone dares to complain. KDE gets some points. KWin supports every mentioned case however it requires manual setup in the advanced windows settings and setting up multiple windows of Dolphin for example could be more straight forward. The OS X window manager is the only one that that handles this properly. Without you having to do or change anything it doesn't purposely through away user entered information and is totally predictable.

On a similar note, how is it possible that both gtk and qt still have issues with scrollbars not aligning with the left screen edge in maximised windows? For such  things there are no excuses.

Final notes

That's it, my ideas to what a desktop should look like in 2011. I took the features I like best of the existing desktops, no need to reinvent anything and break user expectations, habits and muscle memory more than absolutely necessary.  It's my answer to my own complaints about the current DEs but it also addresses a lot of the complaints I have seen about Unity and GNOME 3. 

Do with it whatever you want, maybe it inspires someone.


by t. lofour