Unity, what a concept!



The Unity desktop environment is something which has intrigued me a lot over the past year or so. My interest has partly been in the strong reactions, for or against the environment, from Ubuntu users. The other key point of my interest has been that I've really only used the desktop in short bursts and, as a result, I don't feel I've really got a feel for it. Once every six months I will install Ubuntu, play with Unity for a few days, not long enough to unlearn the habits I've picked up from using other desktop environments, and then I'm off to another distribution and another desktop. In these quick looks at Unity I've certainly encountered things which rubbed me the wrong way, but I've also caught sight of design features which struck me as being beneficial. Or they would be beneficial if one were to use them long enough to form new work patterns. At any rate, I wanted to find out how I would feel about Unity if I used it long enough to unlearn old habits, behaviour learned after over fifteen years of using desktops with approaches different from Unity's. With that in mind I installed Ubuntu 12.04 LTS on one of my machines and tried to use Unity as much as I could while still taking time to test other Linux distributions. Right upfront I want to say that it took about a week for the old habits to fade away and for using Unity's controls to become reflex rather than considered actions. Little things like moving the mouse pointer to the right of the window instead of the left have long been actions performed automatically and they were hard to break. This led to several days of jerking the mouse right, then back left to close windows or minimize them. There was also some trial and error at first finding the best way to handle window organization, launch applications and deal with window grouping on the launch bar. Typically, I have found I am most comfortable with setting up multiple virtual work spaces, populating them with related applications and switching between the work spaces. This allows for a small number of open windows in each space and avoids programs grouping on the task switcher. Unity, on the other hand, while it does allow for multiple work spaces, the desktop appears to be much better suited to having few windows open at a time and I slowly came around to typically using one workspace and grouping program windows together, switching between windows rather than work spaces.



Unity 12.04 - previewing multiple work spaces

(full image size: 644kB, screen resolution 1280x1024 pixels)



Another hurdle I jumped over, which did not take nearly as much time as I had originally feared, was the lack of configuration options. During most of my time with Linux I've tended to prefer KDE, an environment famous (or notorious) for being extremely flexible. Unity, on the other hand, takes a more one-size-fits-all approach and there are relatively few things to adjust, aside from short-cut keys and the wallpaper. Oddly enough, I found I didn't mind so much. While KDE's features and default settings practically require flexibility in order to let users mold the desktop into a desired shape, I found most of Unity's defaults were, well, sane. They weren't always my ideal, but Unity's features and controls were straight forward enough I rarely had the urge to change the environment, apart from the default colours. Let's look at some of the features of Unity I enjoyed. The first thing I appreciated was the general layout of the desktop. Screens have been getting wider and shorter in recent years. Unity tries to compensate for this horizontal stretching by minimizing the use of features at the top & bottom of the screen and it puts the launch bar on the left side of the screen. Applications have their menus removed and (most) windows will display their window bars in the unified bar at the top of the screen. Having stretched screens has also led to increased mouse travel. On most desktops I move my mouse to the bottom-left of the screen to launch a program, to the top-left to access its menu and to the upper-right to close it. Potentially there is a lot of travel for the virtual rodent. Unity does a pretty good job of keeping most interface elements in the upper-left of the screen. The window controls, the application launcher and the program's menu all exist to the upper-left corner of the display. Once I got used to the positioning, it made for less travel and more action. Originally I had expected the Unity Dash to be a major point either for or against Unity as a whole. A lot of focus is placed on the Dash, both by Canonical and by reviewers. However, I found I didn't use the Dash all that much. In fact, some days I'm pretty sure I didn't use it at all. The reason is simple: The Dash is primarily for searching for things, mostly applications and documents. I had most of the application launchers I used on a daily basis on the launch bar and I know where my data files are located. Since I didn't have to search for anything, I didn't need the Dash's primary function. The few times I did use the Dash it was typically to launch a program and, for that purpose, I found it worked well. I like being able to use my computer using either the mouse or the keyboard exclusively (depending on what I am doing) and I would rather not switch between input devices. The Dash was ideal for either case. It was easy to simply hit a button to bring up the Dash, type a few letters of the application name and hit Enter. Or, alternatively, click the Application lens and select my desired app. An additional feature I enjoyed was a little thing, but it fit into my work flow really well. I get a lot of e-mail in the run of the day and, as the audio volume is generally turned down on my machine, my e-mail client can't notify me when new messages arrive via sound. When using KDE I find myself pausing, activating my Thunderbird window, glancing at the various inboxes and then minimizing the window. It just takes a second, but it adds up to many seconds over the course of the day and it breaks my focus. Unity has a nice feature in that the Thunderbird launch bar icon changes to indicate how many unread messages (if any) are present in the user's inboxes. Additionally, when new mail arrives the message notification icon in the upper-right of the screen turns from white to blue. This meant my peripheral vision would let me know when new mail arrived and I didn't have to manually check. In short, Unity let me focus on one task at a time and kept other applications from distracting me.



Unity 12.04 - new mail notification

(full image size: 154kB, screen resolution 1280x1024 pixels)



A feature of Unity I did not appreciate as much was the heads up display (HUD). On paper the HUD seems like a good idea. By default it is hidden and, with the tap of a button, a search box pops up and allows us to search the current application's menu bar. For example, I can tap the ALT key, type in "save as" and hit Enter. Once a person is accustomed to this it can be faster than taking one's hands off the keyboard, grabbing the mouse and browsing through the menu. The "save as" feature might not be an ideal example, but for applications with a great many menu items, the HUD makes finding things easy if we know its approximate name, but not its location in the menu tree. As I said, on paper, it has promise. In practice I ran into a few problems. The first is that the ALT key is the same key which brings up the application menu. This meant sometimes tapping ALT would highlight the menu bar and let me browse, other times it would activate the HUD. I also found that not all applications integrated with the HUD. This meant many little programs such as the text editor would let me use the HUD to navigate, but other programs would not. Most of my issues with Unity were not concerns with the design, but rather the quality of the implementation. I ran both the regular 3-D version of Unity and the 2-D version. Both crashed frequently, almost on a daily basis and, after the environment had crashed once, it would continue to do so every few hours for the remainder of the day unless I rebooted the machine. Both the 2-D and 3-D environment worked much the same and looked about the same most of the time. The one important difference I noted was that the 3-D version would not properly handle short-cut keys, while the 2-D Unity would handled them just fine. Whenever I logged into the 3-D environment I would go into the desktop settings, enter my short-cuts and it would remember them for the remainder of the session. Once I logged out the short-cuts were forgotten and, the next day, I would have to re-enter my short-cuts again. Another problem I had with the 3-D version of Unity was that it chewed up a lot of my CPU usage. Quite often, while my applications were sitting idle, Unity 3-D would use from 40% to 80% of my CPU resources. The Unity 2-D environment, with the same programs open, wouldn't use more than 2% of the CPU. My last technical concern with Unity was the way it handled applications with multiple windows, the best example I have being the GNU Image Manipulation Program (GIMP). When working with the GIMP I found performing almost any action on an image would cause the active window to lose focus. This greatly slowed down work and, whenever I went to save an image in GIMP, the application would crash. This bug occurred every time I tried to save an image, but would only occur when running Unity. When I switched to the KDE desktop GIMP's windows behaved as expected and I experienced no crashes.



Unity 12.04 - software crash

(full image size: 1,024kB, screen resolution 1280x1024 pixels)



This brings me to another problem, one which isn't Unity's fault, but only really shows it head when Unity is being used. Some applications take steps to manage their own window (or windows). These are generally programs not found in the distribution's repositories, they are third-party software and not under control of the Ubuntu developers. Programs such as Opera and Steam will set up their own tab or window controls. This means the window/tab controls will be on the wrong side of the window and may not always work as other applications do under Unity. This is due to the application making assumptions on how the environment usually works and, when the programs are running on Unity, the guesses aren't correct. One last thing I would like to touch on is how easy I found Unity to explore once I managed to put aside my old habits. A few days in I started to notice my work flow was getting smoother and I was making use of little aspects of the desktop I had not previously realized existed. As an example, one day early in the experiment I had many programs open and my launch bar was quite full. I moved the mouse pointer over to the sidebar, scrolled the mouse wheel until the application I wanted slid under the mouse and then clicked on it. Afterward it occurred to me that I hadn't consciously known I could manipulate the icons on the launch bar in that fashion, I had just done it. I further discovered I could bring up previews of all grouped application windows in a similar, unconscious way. Bumping into Unity's features this way makes me think new computer users, ones without my years of ingrained habits, would probably take to Unity easier than I did. My conclusion, after using Unity as my primary desktop for a month, is that it is a pretty good desktop. It is a bit heavier than most traditional desktops, but not overly so. On the right hardware Unity 2-D runs pretty well, though I wouldn't want to try running it on a lower-end system. The design is mostly good and the only times I felt Unity and I were not getting along (again, from a design perspective) was when I would try to juggle many windows at once. Unity seems designed with the idea most computer users will have few programs open at any given time and, as the number of windows increased navigation became proportionally more difficult. To be perfectly honest, I would probably still be using Unity 2-D after my month-long experiment if it wasn't for the technical glitches. The design, as I've said, was to my liking, but the frequent desktop crashes, the strange behaviour when an application juggled multiple windows and the GIMP crashes finally drove me away. I'm now back to using KDE most of the time and I'm in the process of unlearning the ways of Unity. It will make for a few awkward days, but the stable environment will be worth the cost of my transition. I'm not trying to sway people toward or away from Unity. This experience grew solely out of my own curiosity and I scratched my experimental itch. Often I feel that I am guilty of making up my mind too quickly and this was my chance to really immerse myself in a technology to see if it would win me over. After my month of Unity I came around to the idea that it is probably a good environment for many people, especially people who use their computers for a few tasks (such as e-mail, web, chatting) at a time. It will probably be a good environment for me too, once the remaining bugs are fixed.



