For the multi-monitor design project, we have been making use of prototypes to develop and test some of the finer interactions of the system. One such crucial element is the reveal of the Launcher, particularly as we are exploring having a Launcher on each display. The motivation for making the Launcher available from any display is to allow the user to launch and switch applications, without having to travel onto another display to do so.
Download the prototype application and source code
Launcher Reveal Considerations
With a Launcher available on each display, we have chosen to hold the cursor briefly at the edge of any display which does not sit on the left-most edge of the extended desktop, allowing the user to push against the edge to reveal the Launcher. Important considerations here are:
- The Launcher reveal must be reliable and easy to achieve when required
- The Launcher reveal must not be too sensitive: there is already an issue with false positives for the reveal, when targeting items near the left edge of the screen (eg. the browser Back button)
- The user should be able to pass quickly and easily onto the display to the left – they will not always be looking for a Launcher reveal.
- Related to the previous point, if a user overshoots onto a display to the right (when targeting items such as scrollbars on the far right of a left-located display), it should be quick and easy for them to correct their position back onto the other display.
Running the Prototype
The prototype is a C++ Qt application. Download the archive and unpack it. You may be able to launch the application by just double-clicking on it. If this doesn’t work, you will need to launch the executable from the terminal. The steps are as follows:
- Unpack the downloaded archive to a suitable location. In this example, we unpack onto the Desktop.
- Open the LauncherReveal folder on the Desktop and try double-clicking the LauncherReveal executable to launch it.
- If this doesn’t work, launch the Terminal application.
- Type ‘cd Desktop/RevealLauncher’ to change to the directory which contains the executable (replace ‘Desktop’ with the directory you have unpacked the archive contents into if necessary)
- Type ‘sudo ./LauncherReveal’ to launch the executable. To grant permission for the system to run the executable, you will then be prompted to enter your login password.
We have used quite a low-level language and framework for the prototype because it needs to create windows across multiple displays and to manipulate the position of the mouse cursor.
You can run the prototype on a PC with a single display, and try out the Launcher reveal. However, the prototype really becomes interesting when you run it with more than one display attached, and check out the Launcher reveal across all displays.
This prototype concentrates on the Launcher reveal only, so there are lots of things (windows, top bar) which do nothing. The prototype will only work properly for multiple displays with the same height, organised in a row. Being a prototype, this is essentially throw away code, which lives just to explore a very specific set of interactions, for a limited configuration of hardware.
In order to reveal the Launcher, you push the cursor into the left edge of a display for a fraction of a second (100ms by default). This works on any display (not just the far-left display), as we hold the cursor at the edge of a display when it crosses from either the left or right. Push a little more (a further 150ms by default) and the cursor will break through onto the next display.
The images of the browser window are used to test for false positives and overshooting problems when trying to target the Back button on the far left, and the vertical scrollbar on the far right.
Tuning the Parameters
You will notice a panel with lots of parameters to tweak. We have chosen defaults which work well for the small sample of people and hardware we have tested the prototype with so far – informal ad-hoc testing at this stage. Here is an explanation of each parameter and the trade-offs they represent:
Launcher reveal: push for 100 ms
The length of time the user must push against the left edge of the display to reveal the Launcher. For lower values, you get a more responsive-feeling Launcher, but you also get more unwanted reveals when targeting items on the left of the display (eg. the browser back button). Try tuning this value up to 200ms for less unwanted reveals, but you’ll need to push a little harder for those reveals that you want.
Pass display edge: push for 150 ms
Once the Launcher has revealed, we don’t want the cursor to break straight onto the next display, so we continue to hold the cursor for a little more time on a left-most edge. This gives the user the opportunity to stop pushing and move to target a Launcher icon. Lower values make it easier to move from one screen to another, but more likely that you will break though onto the next display when you wish to target something in the Launcher.
Event sampling period: 50 ms
The event sampling period is the size of the time-slices which are used to determine when the user has stopped pushing. A time-slice which collects no mouse events will result in an ‘end-of-push’ condition, cancelling a Launcher reveal or movement across a display edge. Lower values will increase the chances of an unwanted ‘end-of-push’ condition (for gentler pushes or older hardware). This period must be large enough to divide the previous time values into multiple time-slices, otherwise they just degrade into timer delays.
Cursor travels freely after crossing display edges for 1000ms
In order to allow the user to quickly correct an overshoot onto another display (when targeting items to the left or right extremities of a display), we temporarily drop the hold-at-edge behaviour once the cursor crosses an edge. Lower values give the user less time to make any corrections, but making this value too large results in missed edge-holds and Launcher reveals.
Cursor travels freely at velocities over 1000000 pixels/sec
In the prototype, we have prioritised easy, predictable Launcher reveals over travelling very quickly across the extended desktop. The user can still travel across the desktop fairly quickly, although they will be detained for a fraction of a second at any edges in the way. If you want to try out an alternative prioritisation (quick travel across the extended desktop, requiring a slower, more careful and deliberate targeting of the edge for a Launcher reveal), then drop this value down from the very high default value (which effectively disables this feature), to something in the region of 2000-5000 pixels/sec.
Hold cursor at right edge of displays (true)
We found that symmetric behaviour, with respect to holding the cursor on display edges, feels more natural, and also makes it easier to target items near the right edge of a display. However, this feature can be disabled, in order to evaluate whether less intervention on cursor movement might be preferable.
Show Launcher proximity shadow (true)
A shadow will appear at the left edge of a display to improve the discoverability and feedback for the Launcher. It grows out as the cursor approaches the edge, and then grows further still when the user pushes against the edge, providing feedback that the push is being recognised and the Launcher is about to reveal.
How It Works
You can check out how the prototype works by looking at the source code. If you know some C++ and Qt, you should hopefully be able to make some sense of it.
Fundamental to the interactions here, is the ability to determine when the user starts to push against an edge, and when they stop. We measure the duration of the push to see if we should reveal the Launcher or let the cursor through onto the next display. It is straightforward to determine when the push starts: we identify the first mouse move event which crosses a display edge. But how to determine when the push ends is more difficult. Jason Smith, on the DX team, came up with the neat solution of splitting the entire duration of the push into smaller time slices. For each time slice, we count the number of mouse move events coming in. As soon as a time slice expires which has collected no mouse events, then we have the end of our ‘push’.

Have you considered a radial menu? If you want someone to be able to access a menu on any monitor without taking up a lot of space, the radial menu seems like an interesting idea. It avoids having to have precise hovering skills (hover near an edge of a monitor could be frustrating for some users without strong motor skills).
Please give me a way to turn this off. I use two to three monitors routinely. I use and like Unity, but the launcher isn’t the most important part of my desktop experience–what I’m working on is. This is what I find most appealing about Unity: it’s an interface that gets out of my way.
I work with applications maximized. I turn off the launcher reveal in CCSM and hold the Super key when I need it. I don’t need or want it on every monitor.
I know you’ve had people saying traversing many monitors to get to their launcher is a problem for them, and I have no problem with you implementing a solution for those users, even making it the default. Please, though, give me the option to turn it off, as it will only get in my way.
No just no.
It may be helpful to provide a way for testers to submit their ideal settings after having played with it, so see how they match and differ from the current defaults.
Hi Michael,
Good point. It would be great if people could provide feedback and their ideal settings in comments on this blog. I think it would be useful for everyone to see any emergent trends.
you guys are doing a great job.
but i believe this will need to be more accessible to a higher number of testers by using a PPA.
this should help it refine it and catch a bigger amount of bugs before it reaches the masses.
I did notice that, because of the new “push” threshold, I can no longer simply “throw” my cursor all the way to the left of the screen (single monitor, laptop), I have to continue “pushing” before the launcher appears. Reducing the push time to 10ms makes it somewhat better, but that probably re-introduces the problem you were trying to solve with “push” in the first place. I probably just need to stop throwing stuff around my screen.
Am I right, that the “travels freely after crossing display edges” is not symmetric. it behaves different from left and from right. It doesn’t block if you come from the left side and go back, but blocks from right, after coming from the left side. Especially when the launcher is revealed, this is not expected, if you push after it’s revealed, the cursor is blocked from going back to the launcher.
What about blocking the edge when the launcher is revealed? so you would have to go back in the screen for crossing the edge? Or raising the push treshold?
Is there a parameter push strength/ velocity on contact, not just timeout, when moving on the edge? E.g. vertical movement on the launcher edge vs. pushing hard horizontally.
I noticed, that in this prototype leaving the mouse on the edge without pushing doesn’t reveal the launcher, contrary to expected and oneiric’s behaviour.
Overall the experience wasn’t satisfying, it didn’t feel right.
Am really excited with all the work going on with the multi-monitors. Will really help increase the productivity of users if these problems get resolved. Apart from it am also experiencing another problem trying to multitask with the launcher and multi-monitors in this bug:
https://bugs.launchpad.net/unity/+bug/908811
Why not?
Please stop this nonsense and get back to a proper UI. Stop re-inventing the wheel. I think Ubuntu is now dead to me and I’m not the only power user that thinks so. Let’s move forward from Gnome2 rather than make all the UI mistakes you can that have already been made and fixed many years ago. The way you’re going you’re going to be responsible for many RSI’s, hence corporates won’t use it, they don’t want suing nor to pay for re-training/loss of productivity. April will be very interesting when the LTS comes out.
A disappointed and disaffected Ubuntu user of 4 years.
(not related to multimonitor, sorry :)
Have you considered automatically increasing the push timeout (by ~50ms) when there is a maximized window focused? I think that is the main case in which one has the problem of false positives in launcher reveals, while in all other cases where the launcher is hidden (window slightly too much on the left, or maximized window in the background) a more responsive launcher may be desirable…
Gotta gree with Darcy – Please make sure we still have the options to a) Turn this off and have the launcher only appear on the main monitor, and b) continue to be able to have the launcher reveal completely disabled in CCSM.
I use Docky for the handful of apps I haven’t hotkeyed; To me the launchers a secondary place to dump really infrequently used apps.
Please give options to customize launcher, like the MYUNITY or UBUNTU TWEAKS …
for example size of launcherbar, transparency, show/hide lights/signals of active apps, etc
Craig,
I’m sure a lot of power users like me will also disagree with you. I’ve been using Linux for like 10 years now. Unity is a very good look I haven’t seen since then, and don’t even get started about OS X-like docks. Besides, Ubuntu was originally meant for the common Joe. You should try another distro if you are a “power user”. I’m sure you know which distros to go to. For somebody who uses Linux and open-source, you sound like a guy who doesn’t want change or don’t want to share. Change is inevitable man, come out from under that rock you’re hiding from.
And… make it easier to rearrange icons in the launcher.
For me, it’s better with:
Launcher reveal: push for 250 ms
Event sampling period: 25 ms
And the rest by default
I don’t see how this is nonsense considering that GNOME2’s multi monitor implementation was rudimentary at best. This is all new ground to cover.
How would that be activated?
But it’s different and therefore bad. Also I want to be angry at you for something a completely different organization changed/dropped.
I found the better values to be:
Launcher reveal push for 150-200ms
Event sampling period: 10-20ms
Thanks for the great work!
PLEASE consider making the drop down applications menu optional alongside the Unity launcher. I really value being able to select my application from the intelligent grouping system, and have finally defected to the KDE interface for this reason.
Thank you for listening
When having the launcher open and accidentally slipping over the edge, it’s good that coming back is easy (cross timeout), but I expected somehow, that the edge is blocked again from the launcher side.
Don’t know if it would be a good idea to block the edge again if the slip to the other screen was just quick and only little percent into it.
So well said Craig. After years of enjoying Ubuntu and converting quite a few people away from Windows, just because Ubuntu just worked better and was simpler to use. I’ve given up on Unity. I’ve tried it three times and it is just slower, takes more clicks, gets in the way and is incomprehensible to new converts. I’ve given up and gone to KDE myself. I don’t like KDE, it’s not as good as Gnome desktop was but it is a whole lot better than Unity.
On one of my own computers I’ve removed Unity and gone back to Gnome but it is broken and crippled compared to earlier versions and not a good experience. I’ve even started looking for other Linux distros.
I don’t understand what do you mean by “change”. A dock? Haven’t you heard of Cairo? Gnome-do? In what way is this launcher different or better than those two? Would you care to explain?
Common Joe’s are getting a mobile OS running on their desktop now; and it’s SLOW! Unity has done nothing but made switching a lot harder, interface a lot more confusing and applications a lot less accessible. I used both 11.04 and 11.10 and reverted back to 10.10.
If Canonical wants the good of Ubuntu at all then they would scrap this mistake and go along with the old interface *that worked*. You need better apps to make Ubuntu popular, not the looks.
It would be really nice if the unity “dock” could be moved, a lot of users dont like the left position, some ones like on the top, otres on the button etc… I mean, Ubuntu is starting to close options to teh user, and if that is teh case, the users that you want will never come.
Please, become Unity as customizable as you can, thast the why someone worked to change the dock position.
How will this work for touch screens?
I don’t get it..
The launcher was positioned to the left to save vertical space, right?
But then you made it autohide, so now it doesn’t take any space anyway.
Thus rid of the advantages of positioning it to the left, you are stuck with the disadvantages, which is that it interferes with menus and buttons placed to the left in application windows. It seems that alot of apps have important buttons placed along a horizontal axis somewhere around the top, and very few apps have important buttons placed along the button. Thus, launchers positioned along the bottom has much less inference with app windows, than launchers positioned to the left. This is also reflected in launcher defaults: launchers positioned at the bottom happily reveal themselves instantly when approached by the mouse, while Ubuntus launcher can’t afford such luxury, as it would create too much interference. Thus it imposes an annoying reveal delay on the user.
So, yes, I don’t get it. Can anyone explain? Mark?
There is no need to use old software. What you consider to be “Gnome 2”, is actually just a shell for Gnome and it is available for Gnome 1, 2 and 3. It is called Gnome Panel and has been upgraded to the Gnome 3 platform. Unfortunately, there have been some name changes. Gnome Panel was for some time called Classic Gnome, and this has now been renamed to Gnome Fallback. But the software itself is the same, and is still called Gnome Panel. Note that you now have to press the alt-key to customize the panels. Otherwise, it’s nearly identical to the default shell in Gnome 2. For instance, you need to press alt and right-click the panel to add applets, add or remove panels, etc. You also have to press alt+middle-click and drag to move applets. This fixes a very old bug where applets would be moved around randomly when resolution changed, etc. I wish that behaviour was configurable in /org/gnome/gnome-panel, but it currently isn’t. Feel free to add it.
In other words, the old desktop is still available in new versions of Ubuntu, including 12.04. There is no reason to wish for people to stop making new software. Use the old one if you prefer it. There is no reason to be angry at Google because they made an alternative to Firefox. Nor is there any reason to be angry that we get new alternatives to the classic desktop. Nothing has been removed. Choices have been added. Everyone should be happy about that.
Interesting. Isn’t that extremely simple as it is? What is the difficulty? You can’t expect people to fix a problem unless you define it.
Select Filters in your Applications lens. That already provides the grouping you’re looking for. The same categories that was used in previous versions.
I disagree. Making everything configurable means you will be able to activate conflicting settings which makes the desktop unusable. Conflicting settings must be handled gracefully so that users doesn’t have to switch shells and hack their systems in order to make it usable. This is currently a big problem with ccsm, and that must never be the default experience.
Nobody has removed any configuration options. Unity is a young shell, and the options haven’t been added yet. They have never existed. And they should be added slowly, instead of requiring the user to have deep understanding of the system in order to change things. And with all the available shells in Ubuntu, I see a value in having one that is not designed for scripting and absolute customization. All others are.
You can already use four-finger swipe left/right. It’s very nice to use on my MBP’2 mulitouch trackpad, so much that I have raised the launcher reveal timer to 500ms in CCSM ;)
Totally agree. This is why I set the launcher to hide/no-reveal and use Docky (which can be positioned on any other edge) instead.
If the launcher was actually configurable, I’d like it fine. But, I’d rather have tools that I can make fit my workflow, not the other way around.
> “Making everything configurable means you will be able to activate conflicting settings”
Which is different from what I can do in CCSM… how? You simply need to set up a system of mutexes to make the conflicting settings impossible to do via the GUI (like CCSM).
It may take a while to hammer them out, but then you end up with a system that can be bent to the users optimal workflow and not vice-versa.
I’ll go for 50ms launcher push and 100ms push from right screen to left screen. The defaults struck me as a little slow. Going for 25/50 was a little too fast. The double factor for getting through from right to left screen seems right.
I’m using an Asus EeePC running Unity on 12.04. The video card will manage displays up to a total of 2048 by 2048 pixels, so I ran the native display (left) at 1024/600 and an external monitor (right) at 1024/768.
As others have said: I’d like to configure launcher on left most display or launcher on both displays. Left only (which is what I’m getting on the ‘real’ desktop) seems more natural to me at the moment.
For the sake of science, I had better say that I don’t normally use dual displays except for ‘mirror’ mode on data projectors.
@the critics: the point about GNU/Linux is that you model the system to suit your needs, not Cuppertino/Redmond. Choose different!
Hi, another idea for having a launcher on each monitor would be getting back an “ubuntu left corner” icon in the top bar in every monitor (assuming the top bar is replicated, or at least present, in each of the monitors).
This way, the launcher could be revealed in any monitor just by pushing the mouse pointer to its top-left corner (and maybe clicking on it).
Some resistance shoud be implemented for the mouse when in such corner area, to make it easier to arrive and stay in it without passing inmediately to the adjacent monitor.
All this would avoid the tricky timings needed for activating the launcher or letting the mouse go to the adjacent monitor.
Just my 2 cents.
Some people’s brains work differently Jo-Erlend, I was extremely fond of the ability to click a category and see all the programs I had installed related to that category and pick one. I really cannot remember the name of every program I have installed and I do not want to make a filter (essay answer) for a category that had been an easy multiple choice question before.
This, I fear, is the crux of the problem. Applications are being designed for Windows and OSX assuming there will be no OS UI interference on the right or left sides of the screen(s). Users are also familiar with this layout and it gives developers a chance to take advantage of the large horizontal area usually available for their own UI.
I just realized as I had a false launcher trying to click the gmail “inbox” button on the left side of the screen that people designing websites also have this assumption and will continue as long as ubuntu+unity is less than a certain percentage of their traffic.
Here’s my idea:
Put the launcher on top. Make it slide down only when clicking on a small Ubuntu logo on the far left of the top bar.
This is consistent with indicator menu design.
If one needs to see all apps, click on the large Ubuntu logo on the left of the launcher.
Or, double click on the small logo.
This way the launcher becomes solid with absolutely no false positives.
Also, it can benefit from additional horizontal space.
Thanks Mark, I am glad you agree. It’s such a process to open unity, scroll through icons and / or recall a programme name. Another gripe with the Unity launcher is the annoying way it pops open when I go to the edge of a browser window and opens an unwanted programme! I have tried using different settings, but they all have their awkward ways of behaving. Give me the simple drop down menu any day
This works great, the only values I changed
– Disabled hold cursor at right edge (I find it relly anoying if its on)
– increased pass mouse 250 ms
I prefer to completely disable the ability of the Launcher to reveal itself as a result of mouse actions. I do NOT want the launcher sliding out as a result of anything I do with the mouse. I have found this to work best for me. So I always install CCSM and set the reveal setting to “None” on ubuntu installs.
My preference is to change the default keyboard-shortcut that places keyboard focus onto the Launcher (Alt+F1). I change it to just F1. Then I can reveal the launcher by tapping F1 or reveal the Launcher/Dash by tapping the Super key. From here I can click launcher items with the mouse.
I also find it rather annoying that there is no easy way to access applications based on categories, a lot of people who I teach to use ubuntu (I give ubuntu classes in a computerclub) are really inspired to try new applications.
Back in the gnome2 days they could usually guess or just see where their newly installed apps went, now they have to recall all the names :S
I dont use the launcher and i dont use the dash. I use only Synapse. Best thing ever :)