Introduction to task switching
A key part of any operating system user interface is how it enables the user to switch between multiple tasks. In most desktop operating systems tasks are encapsulated into windows, and the most frequently used method of multi-tasking is window switching. Desktop OSs have multiple methods of window switching (e.g Alt-tab, clicking on indicators, notifications, etc…) however the most common means of window switching is via using what is variously termed a Launcher, Taskbar or Dock. Traditionally there has been a 1:1 correlation between each window and its representation in the Taskbar (see Windows2000 or Gnome2).
(Ubuntu Hardy Heron used Gnome2 which featured one taskbar icon per window)
With Windows XP, Microsoft introduced a way to aggregate multiple windows that belonged to the same application into a single task bar button. This change was primarily focused towards personas who made heavy use of multi-tasking; this feature only switched on when the number of windows represented in the Taskbar exceeded the length of the Taskbar. It gave the benefits of increasing the number of windows that could be comfortably represented in the available task bar space, and reduced the time and effort it took the user to visually scan a crowded Taskbar and identify an application. The cost of this change was that an additional click was required to switch to a window that was not the most recently focused window of that application.
(The WindowsXP desktop that introduced the concept of representing multiple windows with one taskbar icon)
Unity’s current window switching functionality
Fast forwarding to 2009, when working on the original designs for Unity we knew that window switching was one of the key areas of any OS’s user interface, and we set out to design a window switching paradigm that would surpass the utility and usability of the contemporary competition at the time (Windows 7 and OSX Snow Leopard). The Launcher was only 50% of that equation, the other 50% was a set of functionality we termed the ‘Spread’.
The Spread designs were completed, prototyped and tested well before the launch of Unity with 11.04, but unfortunately due to the huge number of other items that needed to be completed before we could launch a brand new desktop shell, the decision was made to postpone the development of this feature and use the Compiz equivalent of this functionality as a stop-gap measure.
(Compiz window switching in Ubuntu 11.04)
While using the Compiz window switching functionality enabled us to hit 11.04 launch deadline, there are a number ways in which it could be improved. Since then many many bugs, mailing list and forum postings have also requested the same set of functionality that was postponed as a result of this decision. Requests we frequently receive include:
- Please make it easier to tell one window from another, all terminals look very similar!
- Make it easier to select windows using keyboard navigation and shortcuts
- I would like to be able to easily close windows from the window switcher view
- Can you make it clearer to see which application’s windows are currently being displayed (in the switcher view)?
- I find it difficult to see which window is currently focused in the window switcher view, can this be improved?
- Can you find a way to make window switching faster?
Window switching requirements
After researching the window switching problem space and examining the use cases that a window switcher needs to support, we distilled the findings into a set of design requirements. These were:
- To aid window identification, the window previews should to be as large as possible, taking maximum advantage of the available screen real estate.
- Window switching needs to be very intuitive and easy to understand for new users. In user testing, a user who has never used Ubuntu before must be able to switch windows without encountering any difficulty.
- More experienced users should be offered an accelerated method of ultra-fast window switching.
- Users should be presented with all the information that is pertinent to making a window switching decision, but no more.
- The window switching mechanism should follow the activity/task hierarchy, in order to minimise time needed to identity the required application, support intensive multi-tasking use cases with very large numbers of windows, simplify the Launcher ordering problem, and make the most efficient use of the Launcher’s screen real estate.
A very brief introduction the ‘Spread’
So now with 12.04 almost behind us, we have dusted off our original Spread designs and given them a light spring clean ahead of development starting in 12.10. So without further ado…
This design shows when happens when a user clicks on the Firefox icon to spread the available windows. The maximum amount of screen real estate is dedicated to making the window previews as large as possible. Moving the pointer over any of the previews will display the window name in a window title bar, and a close button is included so that any window can be dismissed directly from this view. When in this view users can also directly switch to spreads of other running applications by clicking on application icons in the Launcher.
In addition to pointing and clicking with a mouse or trackpad, power users can perform all window switching actions without taking their hands off the keyboard. Holding down the SUPER key will reveal the Launcher with numbers overlaid on top of the individual Launcher icons.
Pressing a number performs the equivalent action to a left click, so if a app is already focused pressing its number will reveal a spread of its windows.
When the spread is revealed, numbers are displayed in the bottom left corner of the previews. Pressing a number will then select the relevant window and close the Spread. Added together this allows a power user to switch to any window of any application just by using the SUPER and NUMBER keys. In addition users will be able to navigate the Spread by using cursor keys to move the orange focus box and ENTER to select.
Another new feature is the ghost window ‘New Window’ option. Previously if a user wanted to open a new window for an application that was already running they had to either middle click on the application’s Launcher icon or press CTRL+N. The problem was that new users had no easy way of discovering these options. When using the Spread, a user can select the ghost window to open a new window of the currently focused application. This feature has even more benefits in a multi-monitor context, and if a application does not support multiple windows this option is not displayed.
Other features include the ability to filter the windows by typing…
and of course this new functionality apples to the SUPER+W spread of all windows on the desktop.
Multi-monitors, workspaces, and all the other gory details
This article only takes a very brief look at a few of the Spread’s features, and barely scratches the surface of the Spread design. A lot of thought has also gone into designing how the spread works in multi-monitor and/or multi-workspace environments, and if you are interested in learning more and reading all the gory details of how every corner case and eventuality is handled, head over to Unity Switching section of the The Toolkit to read the full spec.
Just WWWHHHAAAAOOOO !!! It just seem perfect !!! And what a perfect idea to use unity-style dash to search amongst windows ! Very great for the “New window” item, it’s just what is needed by new-comers. We just need the same for workspaces, À la Gnome Shell. You’re just wonderful in the design/UX teams.
Thanks! ;-) Have a look at the spec in http://design.canonical.com/the-toolkit/unity-task-switching/ for full details about how The Spread works with workspaces, let us know what you think.
I like it very much. One question: how to close window from the spread if I’d use touch input?
ok, so the number one major fail with unity is that it is hard to raise one window of an application without all the others rising to the top. Alt-tab between two recently used windows is horrible because it raises all the other windows and you get lost. Clicking a launcher action should raise *just* the most recently used window of that application. Clicking it again should raise the next one (or maybe all of them, I am OK with that) but clicking the launcher button raises like all the windows to the top, which is just messy.
Hi Alan, to respond to the two issue you raised:
1) the issue with windows that are not selected in Alt-tab being raised is a bug, see https://bugs.launchpad.net/ayatana-design/+bug/861250 Hopefully a fix for this bug will land soon in Precise.
2) Clicking a Launcher icon should raise *just* the most recently used window of that application (if that application is not already in focus). Clicking a second time should spread all the windows of that application, but *should not* change the state of any windows. If the user clicks on a minimised window in the Spread that window should be raised, but otherwise it’s state should not change. This is the current behaviour in Unity3d, but I think Unity2d may have a bug in this area.
In spread mode the window title should always display text and bigger.
It may look cool on a couple of browser window, but try with five spreadsheets(or pdfs, docs, terminals…), they will be barely indistinguishable. The only way to know the difference is with document name. This is a really common use case.
I’m having such a hard time at work in these cases that I have to use a taskbar like tint2
(something other than complaining)
Unity is shaping up really nicely and things are getting really polished.
Kudos to the design team.
Hi Luiz, when the pointer moves over a preview, the window title is always the normal 100% size irrespective of the preview’s scaling, does this answer your question?
I like what i’m reading. 10/10
Looks nice, but I am worried about one thing.
For example:
Situation is I have 2 windows (1 Firefox and 1 Nautilus) and I am using Nautilus.
If I want to switch to my Firefox window, I naturally click on the Firefox icon.
Currently (11.10), the Firefox window immediately appears and is usable (I can type text in it, or else).
But with the ‘Spread’, i understand that I will have to click twice: 1 click to display the ‘Spread’ (which will show the Firefox window + the ghost window), and a 2nd click to focus on my Firefox window. Am i right ?
Keep it up, guys. You’re doing amazing work. I love Ayatana’s efforts and I only wish you had the staff of MS to pull all this off in one fell swoop :).
It’s a mockup only ? Or you have some code in launchpad ?
Awesome!! I really like the idea.
4 words, “When does this Land?”, :)
Hi Yann, with The Spread this aspect of the window switching behaviour will stay as you currently like it.
The first click on a non-focused application does not trigger the spread, it always focuses the last focused non-minimised window. The Spread is only triggered when you click on a application that is already in focus a second time. Have a look at the spec in the ‘toolkit’ section of this blog for full details.
Hopefully 12.10. But like any new feature it has to hit our quality standards before it can land, so this is not guaranteed.
On the case I described with this behavior, it’ll take a lot of time until I can pick the right window(opening spread and hovering each window to find the right doc). It will be a lot slower than something like that WinXP screenshot.
Nice, I like this “sugar”, but… :)
sometimes when you have a lot of one app windows/instances opened (let’s say Skype – and you have 10 chat windows opened) – it is very hard to find needed window as they become very small with current compiz “show windows” effect and I think Spread would not make it much easier to find (when there are really a lot of windows it will also show them very small).
So at those times I’d want to have some popup list of opened windows (something like WinXP/Win7 implementation) on icon mouse hover (not to make additional click).
The goal is to get to needed window as fast as possible – and there should be a way get this window without to unneeded clicks, typing, search and even long animated effects of showing all windows – because it is annoying (as a lot of people and me are switching between windows 8-10 hours a day :)).
Sometimes just list of opened app instances is needed.
Maybe the most suitable implementation I’ve seen is in DocBarX (http://gnome-look.org/content/show.php?content=101604)
“window title is always the normal 100% size ”
By the way, in the screenshot(spread firefox browser) the window window seems bigger.
Wow. Some really fantastic ideas here! Thank you.
One question, any chance dynamic workspaces will be implemented in some form?
but I’ll have to hover my mouse on all those windows to see each title, right now compiz/scale can have title all the time, gnome-shell too.
and I hope this will inherent scale middle click to close function, the close button is too small.
I think it would be even better if all window-titles are shown, at least optional. This would speed up the process of finding the right window.
Great work!
You could also be interested in this:
http://christianmartellini.wordpress.com/2012/03/16/alt-tab-and-unity/
I like it, but I would love to see the ability to map the spread commands to mouse buttons. Right now I have scale set to button 10 on my mouse and it works quite well for me. Keyboard shortcuts are great, but even though I consider myself a “power” user, I almost never use them. I like to drive from the mouse.
wow , this looks amazing!
1 question: When in the full spread will applications show their respective icons to help further distinguish between them?
for example I’ve been testing cinnamon and now has an improved spread, which helps quickly differentiate the running apps thanks to the icon.
http://3.bp.blogspot.com/-yMA9-qHyzdU/T1_XvERtWHI/AAAAAAAAIMY/HA-fRZZ1Vdo/s1600/cinnamon-1.4_2.png
http://www.webupd8.org/2012/03/cinnamon-14-released-with-new-hot.html
I think them being on top of the previews instead of outside will be ok and saves space.
Anyway, kudos for the constant improvements I will so looking forward to this implementation in 12.10 !!!!! Unity will kick butt :)
The pictures shown in the document are so detailed! Are these just mockups or is that real code which is under heavy development at the moment?
Also if they are mockups how do you create such detailed mockups?
What about all this changes in Unity-2d?
“Pressing a number performs the equivalent action to a left click, so if a app is already focused pressing it’s number will reveal a spread of it’s windows.”
sb:
“Pressing a number performs the equivalent action to a left click, so if _an_ app is already focused pressing _its_ number will reveal a spread of _its_ windows.”
Thank you, kindly. :)
ok, it’s perfect then. Thanks John !
are you sure that is the current behavior in 3d? I have a fully updated precise and if I have a bunch of terminals on screen, then a firefox over the top of them, then click once on the terminal launcher icon *all* the terminals are now above the firefox window.
Well, I must have missed something, but how is Unity better than a traditional desktop? The truth is that it takes more time and more clicks to switch between applications. Unity is the death of multi-tasking!
Traditional desktop common user:
1- click to start applications through start menu or desktop icons
2-click use window titles in taskbar to switch between windows
Traditional desktop power user:
see above
—–
Unity desktop common user:
1- click to start applications through start menu, desktop icons or launcher tiles
2- click launcher tile to initate spread to manage windows and switch between them
Unity desktop power user:
1- start applications through super key + number string for prefered apps (in my case it’s super +134 for most days to start browser, mail, and music,)
2- Switch between applications with super key + app number + window number or alt+tab
——
Usage of app-based window managment presents a much easier to learn desktop paridgim for new users and allows for much more productive keyboard shortucts because of an extra layer of logical grouping, that is how unity is better than the traditional desktop.
This is absolutley amazing design and gives unity a real advantage in productivity environments. Thanks for making my desktop OS better and better :D
Out of curiosity, is the selected window glow going to be orange in stead of white? While this is consistant with radiance, a lot of people (myself included) don’t enjoy being forced into a colour pallete that may or may not look acceptable with their desktop background. What happens if i have an orange wallpaper and the chamelonic overlay onto the background makes the glow indistingusihable? The usage of orange glow on the workspaces switcher is much more acceptable because the background is pure black (something that should be fixed IMO) but in window spread this application of color can create an accesabilty/usability problem. Is there anything that can be done about this or is your commitment to a non-neutral/customizable color pallete steadfast for branding reasons?
Perhaps it would be wise to allow the user to custom define the “Selected item” colour for radiance/ambiance and unity highlights from a little colour box next to the theme selector dropdown box in the desktop apperance settings. That would be super cool and give people one less reason to reject it. It may be a trivial detail but a lot of people live in trivial details.
That’s exactly what i’m thinking. I’m not sure it’s better/faster than the tradicional winxp approach.
Nice!
One feature I miss is the possibility to drag a file from a maximized window to another. This is useful, for example, for attaching a file to an email from the file manager.
As far as I know, at this time, only “related” application to the dragged file seems to allow dropping.
It would be great if you could add some way to start the spread mode from a file drag.
Keep up the good work!
Has any thought been given to touch interfaces?
It seems really hard to close windows with touch, since both the spread and maximized windows only show window buttons on hover. That means the user can only close a window when it’s not maximized…
That’s a bit frustrating.
I really don’t appreciate the actual switching methods. I have got used to the current Alt+Tab and now I think it works pretty well, although I always avoid the launcher on my laptop (which I usually use without a mouse). It lacks pretty much the features listed above!
I think the you got the right spot with the ability to choose the windows using the numbers and the search bar!
Kudos to the team!
I agree with this. Titles should be visible for all the windows without hovering, so that you can scan through them at a glance. The process of going to the launcher, clicking twice, and then hovering in turn over each window to find the one you want (on the regular occasion when the tasks have no obvious visual difference) is going to be quite frustrating.
This looks like a big improvement. One thing I am curious about is how stable the key sequences will end up being.
I currently use XFCE desktop because this means I can put my (e.g.) Eclipse stuff on desktop 2, my web browsers on desktop 3, mail on desktop 4, chat on desktop 5, … photo processing / graphics on desktop 11 and use keyboard shortcuts to switch. Consequently I always know that will take me to my chat desktop and then I can among the few things on there to choose IRC, Pidgin or Skype.
Since those keys are assigned manually, they are very stable, and of course there’s a small overhead every month or so when I reboot my laptop for some reason and have to make sure I start programs running on those desktops. In fact that overhead is very small, because my fingers remember the desktop and my eyes see the program is not running and so I start it then. Once a program is running I don’t usually want it to stop running, unless it uses CPU continuously and makes the fan run all the time.
So stability of key sequences can be very useful, and I wonder if these will retain a similar stability, at least in the first ordering.
Regards,
Andrew McMillan.
wow!! congratulations, unity is becoming more efficient :)
the only thing I miss is the minimize action when clicking the app icon but I see a conflict there when you have two or more windows of the same aplication…
Thank you for all your amazing work!
This will be much better, for sure. But I really miss something to open an window from quicklist. For example, sometimes will be much easier to open the icon quicklist and open directly the window that I want.
I think the Elementry (Jupiter) launcher have that, when you right click show all open window, it’s faster then open all the windows and select what you want.
I found that, I think it’s explain better what I say:
http://www.theopensourcerer.com/2012/03/16/unity-window-quicklists/
You make my points!
As a “common user” you have at least as many clicks in Unity to start an application as on a traditional desktop, see your list. Except if you are unlucky and don‘t have the application on the launcher or don’t remember it’s name when Unity is considerably slower than a traditional desktop. What’s the gain?
As a computer user since 20 odd years (I hate your word power user). I use short cuts to start applications similar to Unity, but simpler and personalised. Nothing new here either, except for the awkwardness and lack of customisation of Unity.
I can’t accept that it is simpler to switch between applications or windows with a multi key spells or with a special click on a launcher than to point and click on the panel as on a traditional desktop. The “short cuts” in Unity take focus away from the workflow, are hard to learn and customise. I can use ALT+TAB or other short cuts on a traditional desktop too, so there is nothing new in Unity except for lack of options and awkwardness.
The new window switcher occupies the whole workspace which takes focus away from the running application. On a traditional desktop I have the same amount of information discreetly distilled on a smaller area with window thumbnails, windows lists etc. Unity really comes between you and your work.
When I use Unity I open an application – Do something – Close application – Open new application and so on. It is too frustrating to have multiple applications running or several instances of the same application open. This is not the way I desire to work, but the way Unity has made me to. Unity is death to multi-tasking and bad design.
Unity may work on tablets where you run one application at a time or refrigerators but not on desktops for work that includes intense multi-tasking (as for me).
Just because something is new it does not have to be good!
“In addition to pointing and clicking with a mouse or trackpad, power users can perform all window switching actions without taking their hands off the keyboard. Holding down the SUPER key will reveal the Launcher with numbers overlaid on top of the individual Launcher icons. ”
12.04 updated to Unity 5.6.0-0ubuntu4
I can see the left-click on launcher icon to see the window spread behaviour now.
When using press and hold Super key, only the first 10 launcher icons are numbered 1,2…0
What happens if I want to spread the windows from the keyboard for an icon that is, say, number 15 in the launcher?
It is very nice and I agree that one click should focus the last window nad hovering the icon for a while without clicking should spread.
More than 4 windows at a time shouldn’t be possible in order to maintain lisibility.
More than 4 windows of an instance should be scrollable horizontally.
Very Good work for 12.04 by the design team except :
We have overlay scrollbars everywhere but the four main programms (firefox, thunderbird, office and chromium). No other OS has two scrollbar systems.
Lo-menubar not integrated (for the same reasons)
Hud is not matured enough for its inclusion in lts It doesn’t understand anything. can’t even read menus and unable to bold a text….
Bring back dodge has it was the main mode used by most people and believe me it was far less confusing than HUD for newbies !!!
Can’t wait for 14.04 ;-)
When I use Unity I open an application – Do something – Close application – Open new application and so on. It is too frustrating to have multiple applications running or several instances of the same application open. This is not the way I desire to work, but the way Unity has made me to. Unity is death to multi-tasking and bad design.
A perfect summation of the failure that is unity.