Hero graphic says 12 feature that made Unity the desktop linux desktop.

Ubuntu’s Unity desktop is the best Linux desktop environment I have ever used.

There, I said it. Naturally, I was sad when Canonical announced it was replacing Unity as its default desktop, replaced by the perfectly capable GNOME Shell, beginning with the release of Ubuntu 17.10.

For over six and a half years I, like millions of Ubuntu desktop users, logged in and relied on Unity to get things done. Despite the controversies (Amazon spyware) and the underlying technical churn, the Unity desktop never got in the way.

As (arguably) the one part of Ubuntu that defined its modern identity, it’s only natural to wonder what Ubuntu is without it.

Best Features of Unity desktop

Unity Desktop: A Concise History

Unity was made Ubuntu’s default desktop in Ubuntu 11.04 (Natty Narwhal), having debuted in the Ubuntu Netbook Edition in the release prior, Ubuntu 10.10 (Maverick Meerkat).

Although bullish on its readiness at the time, Ubuntu founder Mark Shuttleworth now says Unity’s early introduction was a ‘mistake’. Early versions of the desktop were buggy, lacked features and had a reputation for crashing a bit too often.

All of the key features were present at the start, albeit honed and polished (and, yes, frequently re-written) in successive releases, and expanded with truly innovative integrations that broke new ground and upended years of convention.

Ubuntu’s slogan was “Linux for human beings”, and Unity made that aim evident.

A lot of the engineering effort that went into shaping the desktop is invisible. Much of it was done under the auspices of the Ayatana project, a design team at Canonical whose aim was to think about how the desktop presented information. That effort underpins every feature in this list.

One final note before we skip on (albeit with a tear in our eye): Unity isn’t going away. It is supported until 2021 on Ubuntu 16.04 LTS and, per Mark Shuttleworth, will be available in the Ubuntu 18.04 LTS archives – those who don’t want to stop using it, don’t have to!

But what were the best features? I asked the OMG! Ubuntu! Twitter account followers – this article is based on their replies.

1. The Unity Launcher

A vertical launcher made sense in the netbook era

The most iconic part of the Unity desktop was the left-aligned vertical launcher. This was an anchor point in the Unity experience, letting you launch, manage and interact with applications (whether they were running or not).

A vertical launcher/dock was not common at the time, and the traditional GNOME desktop Ubuntu had been using prior to Unity had a bottom panel.

Canonical felt a vertical dock made effective use of screen space, which at the time was more limited in height than width (netbook displays were typically 1024×600).

Under the hood, the launcher was rendered by a custom OpenGL widget toolkit Canonical made for Unity, called Nux.

The Unity shell ran as a plugin (unityshell) inside of Compiz, a window manager famed for its fancy effects (like wobbly windows). Compiz handled window management and compositing, while Nux rendered Unity’s UI elements, including the launcher.

It wasn’t until Ubuntu 16.04 LTS that an option to move the Unity launcher to the bottom of the screen was added. Had it been present a little sooner, I don’t think some of the early criticisms would’ve had nearly as much sting in them.

2. The HUD

HUD made finding menu items easy

The Unity HUD (Heads-up Display) looks as innovative today as when it debuted in Ubuntu 12.04 LTS.

Tap the Alt key, enter a keyword or two and then matching menu items from the app in focus would appear. You’d select the one you need hit enter to action it! It made finding menu options buried three sub-menus deep a two-second job.

What made the HUD technically interesting is how it knew about those menu entries at all. Unity used a GTK module (unity-gtk-module ) that intercepted app menus at a toolkit level and rerouted them over D-Bus using the dbusmenu protocol.

A special service tracked which window had focus and what menus it had registered. When the HUD was opened, it queried that registry so you had a fuzzy-searchable index of the active application’s entire menu tree (without the menus needing to be visible on screen).

It worked for Qt applications too via a separate appmenu-qt package. App menus as a D-Bus data structure – novel indeed.

3. The Dash

More than a launcher – it was a literal dashboard

Unity’s Dash was part application launcher, part file search and part search engine. It let you find and open locally installed applications and search through your files and folders – all from one unified window you could open with a simple hit of the super key.

It’s interesting how the Dash evolved over the years. The original version had a sparsely populated “start page” consisting of four giant shortcuts and four links to default apps (browser, photo manager, e-mail client and music player).

For a long time, those 4 app shortcuts couldn’t be changed

Later versions of the Dash bought integrated app and file history, making it a more useful jumping off point than the static screen.

File history wasn’t powered by Unity directly, but Zeitgeist, a system-level activity log daemon that recorded which files and apps you used, how often and when.

So when the Dash presented your “recently used” documents or showed you what you’d been working on, it was querying Zeitgeist’s event log – surfacing your behaviour rather than scanning your files.

The Dash was where Lenses and Scopes could be accessed, but I’ll come to those separately later on.

4. Unity Web Apps

Well before their time

Ubuntu’s innovative Unity Web Apps may have been short lived and quickly forgotten, but they serve as another example of Canonical being well ahead of the computing curve Unity was.

The feature allowed websites in the browser to interact and relay information to the desktop.

You could ‘add’ a supported website with a click. This would give it relevant access to desktop features and create a spiffy Unity launcher item.

For example, Gmail integration added an unread count badge to the Unity launcher item and notifications of new messages;  you could sift Reddit using the HUD; and you could control music streaming sites like Grooveshark from the Ubuntu Sound Menu.

5. Quicklists

Quick lists made more actions, more accessible

Quicklists in Unity were one of those quietly useful thing you took for granted.

Apps could define a set of  actions that users could access through a right-click on the launcher icons.

For example, you could right-click the a music player to pause playback or skip track; open a new web browser window in private mode; or (back in the day, sob) refresh the Gwibber social client to fetch the latest tweets and dents (remember those?).

6. Progress bars & Badges

Progress at a glance

A feature that echoed one on macOS, but a good one – for supported apps, the Unity launcher could show a badge count to quickly relay information at a glance, unread messages, concurrent downloads or even weather temperature (developers were canny folk).

Progress bars could also be overlaid on launcher icons during downloads, exports, conversions and rendering, etc.

Both features were powered by the libunity library and required app developers to explicitly support them. This led to some consternation, with app makers often catering to Ubuntu’s APIs to the exclusion of other standards.

Like a lot of criticism in that era, it was short-lived. KDE implemented the same D-Bus protocol in its taskbar. What started as a Unity-specific API ended up a cross-desktop Linux standard.

7. Global Menu

Mac fans didn’t mind, but Linux ones did!

Ubuntu’s use of a global menu in Unity is one of its most memorable features. It debuted in the Ubuntu Netbook Edition (netbooks had low resolution screens, so saving vertical space was a priority – see #1) and migrated to the desktop with the rest of the Unity shell in Ubuntu 11.04.

The advantage of having a menu bar at the top of the screen? According to Fitt’s law, a target at the screen edge is effectively infinite in size. You don’t need to aim accurately, just fling your mouse to the top of the display and it triggers.

On a tiny-screen netbooks, that was a great win. Desktop users with larger screen sizes weren’t always as enamoured by the travel – though Mac users rarely complain about it either.

The “background magic” that let app menus live in the top panel rather than their naive app was the same dbus-based rerouting used in the HUD (see #2). The panel rendered those menus as its own UI elements, and the native apps own menu bar hidden.

For applications that drew their menus without using standard GTK or Qt menu APIs (which included Mozilla Firefox for a while) had patchy or nonexistent global menu support.

Opinion towards the feature was split, though most of the gnashing was short-lived and reactive. Others weren’t enamoured, so in Ubuntu 14.04 LTS made it optional by adding a locally-integrated menu toggle to put app menus back in the window of the parent app.

8. Shortcut Overlay

Cheat sheet for shortcuts, innit

Many of you may not know that the Unity desktop had an informative list of keyboard shortcuts. The cheat sheet lists handy key combos to help users learn or remind themselves how to interact with parts of the Unity desktop without having to lift a hand from the keyboard.

To reveal it, users just long-pressed the Super key.

Long-pressing a modifier key to reveal contextual help was a novel UX pattern at the time. No need to open documentation or hunt around inside of app menus, you could call it up wherever you were, at any time, to swot over.

9. Smart Scopes

Scopes

Unity Smart Scopes are context-aware search backends for the Unity Dash.

In theory they allow you to, say, search for ‘Doctor Who’ in the Home Scope and via the power of a ‘smart server’ backend see a stack of relevant results from popular websites, web services, and locally installed applications,

On paper Unity Smart Scopes should’ve been a game changer. But, thanks to the inclusion of affiliate-linked Amazon shopping results, the feature drew the distro ire from almost every direction imaginable.

Branded ‘spyware’ by some, shopping results and other online sources were disabled in Ubuntu 16.04 LTS.

10. Lenses

A less comprehensive forerunner to the search-centric Smart Scopes (see #9), Lenses were dedicated content-specific panels that could be added to extend the functionality of the Dash.

Lenses serve up results from online services (a bit like a less guess-y Smart Scope) and/or surface local results. Right-clicking on a result in the dash opens a preview pane with additional information, content snippets, and, for music files, even in-dash player controls.

Ubuntu has shipped with various lenses by default over the year, with the current line up comprising: Home, Apps, Documents, Videos, Music, and Photos. Developers (at least in the early days) created a slew of additional Lenses, including ones for YouTube, Tomboy notes, and contacts.

11. Chameleonic theming

A subtle Unity feature that some (surprisingly) never notice is its chameleonic tendencies. The colour of the Unity launcher, the Dash, and notification bubbles change hue based on the dominant colour in the background wallpaper.

There’s presumably a very complex algorithm at play here, deciding which colour in the background is dominant and extracting a suitable hue based on it.

12. Unity 2D

Unity 2D is the oft-forgotten Qt/Qml version of Unity that was aimed at lower end devices and virtual machines — but adored by desktop users anyway!

Despite the lack of graphical whizz bang the shell boasted impressive feature parity with its composited sibling, including item badges, the HUD, workspaces, and right-click quick-list menus.

Unity 2D fell into unmaintained mode around the time of Ubuntu 12.10. Canonical reasoned that the Compiz version was now able to run decently on low-power software,  two separate versions of the same desktop was a little excessive.