by Jonathan Rothwell

Fixing workspaces on Ubuntu

Yesterday, I updated my Ubuntu install to the present testing release, 12.04, the Precise Pangolin. It’s still in the very early alpha stages, but it works, and development is progressing fast.

It’s nowhere near as polished as, say, Mac OS X, but it’s a substantial improvement on previous releases. Ubuntu typically provides a very good compromise between convenience (it’s probably the distro that gets closest to the “It just works!” ideal) and flexibility.

However, there are a few things about Ubuntu’s default desktop shell, Unity, that bug me. Specifically, I’d like to briefly discuss Unity’s virtual desktop model. It’s effectively transplanted in situ from GNOME 2, and is, quite simply, broken.

For those unfamiliar with Unity, it provides a sort of exposé mode, accessed by hitting the Super key and S in 12.04. It provides an overview of all four virtual desktops through a compiz plugin, and it looks like this.

Four workspaces displayed in a grid.

There are three problems with this model.

  1. The number of workspaces is fixed at four, which quickly becomes very restrictive, especially on small screens.
  2. Windows can easily become hidden behind maximised windows.
  3. Windows can overlap workspaces, causing focus to accidentally be assigned to other applications and situations like this:

Here, the overlapping title bar of a GIMP toolbox steals focus from the window in the bottom-left workspace.

This is a stupid way of dealing with workspaces. It means I spend a lot of time fiddling about with window management, activating Super+S and dragging windows between workspaces.

KDE’s solution, of treating each workspace as a self-contained desktop where windows cannot overhang, is nominally better. However, for my money, the problem has already been fixed adequately.

GNOME Shell and Mac OS X both use a similar model of dynamic workspaces. Here, windows cannot overhang, but the number of workspaces is not fixed. You can have as many or as few as you like, and empty workspaces are automatically removed.

GNOME displays its as a scrolling list of workspaces, while OS X goes for a horizontal “filmstrip” style. OS X even goes one better by running maximised windows in their own workspace, which eliminates the problem of windows becoming lost behind other maximised windows.

So, if the solutions already exist to fix it, why aren’t we seeing these solutions implemented in Unity? I can’t help but think I’d sooner see this fixed than see time and money poured into the implementation of a weird cross between a menu and a desktop search utility.