That’s my blog… Life and Linux

Introducing Locally Integrated Menus to Unity 7

Hey Ubuntu folks¹!

This is the Unity desktop team and during the last months we focused, as always, in polishing and improving the user experience of our default window manager for the next upcoming LTS!
In fact, while in the last months most of the Canonical commitment to Ubuntu has been directed to the Touch form factors, the “classic” desktop has not been forgotten at all and, we’re still working hard on it, to give our users the best experience and to approach smoothly to the convergence vision that we’ll get with Unity 8.

Part of this work have been the spread improvements, the HighDPI support, the new decorations and tons of various bugs fixed; however with this important milestone coming we also wanted to finally propose a solution to fix the main UX bug we have in Unity since its very first release: the menus being hard to find or too far from their parent window.

In fact, having the applications menus in the top panel really worked very well in small screens but now, especially with HiDPI monitors getting more and more popular, the top panel could be really too far from the actual window location… The solution, that the UX designer JohnLea has defined are the Locally Integrated Menus (LIM).

Ubuntu Unity Integrated Menus

People might recall that also at 12.04 times we implemented a first prototype of LIM, however due to some very-hard-to-fix issues we had with core applications, we decided not to try to propose an half-working solution for an LTS.

So, almost 2 years have passed, but our intent to get this feature done was still strong, although this time we wanted to implement LIMs in the proper way, as Ubuntu quality standards deserve. In addition designers defined a new and improved revision of their work, proposing to show the menus inside the decorations themselves in horizontal mode (until we’ve room for them); so, continuing to save the precious vertical space and keeping the nice look of menu-less windows unchanged.

To be honest, we’d loved to land this way before, but the amount of technical work needed has not to be underestimated.
Being more precise, one of the blockers we had in 12.04 was our dependency on the legacy compiz decor plugin + gtk-window-decorator, that has worked “OK” in the last years but – a part from using deprecated technologies (gtk2 in primis) – it really would have made this concept impossible to realize.

So, the first step has been moving away from the old gtk2-based decorations and writing brand new decorations supporting Gtk3 CSS theming² inside Unity itself; this has been an huge work (including writing a brand-new widget system for handling compiz textures in a more natural way), but it gave us great benefits in the end such as much faster windows resizing , improved look, support for dynamic scaling (for both HighDPI and accessibility reasons).

Once we had this new layout where to place any widget quite easily, all took shape in few lines, we only had to handle the fact that now menus opens on mouse button release and only if the user doesn’t keep it pressed for too long³, while a slightly trickier part was to handle the case where we had a too small window to show menus in horizontal mode, and where we had to fallback to a dropdown menu.

LIM’s dropdown, shown if we have not enough space

As this is an LTS release, before setting this menu mode as the default we wanted to have some community feedback. For now, you have to enable it using the Unity Control Center Appearance panel, and let us know what you think!

Unity Control Center with Application Menu settings

Tweakers might be happy to know that there are also other settings you can use to adjust your LIM experience under the com.canonical.Unity.IntegratedMenus gsettings schema, that allows to define the pressure and movements thresholds, and to also enable double-click over the menus (to maximize the window, if you’re fast enough); However, while you can adjust the settings for now, we encourage to use the defaults as they are based on wide user testing and are coherent with our design guidelines.

After some words, I guess it’s time to see them in action, and upgrade your Ubuntu Trusty machine to enjoy them!

Youtube Video

[1] Hello Planet, I should also probably say! 😉
[2] We really encourage and support anyone who wants to update its theme to support Unity
[3] Maximum press time is configurable, but default values are based on design user testing

  • Yes indeed… The fix has just been released to trusty. See

  • guy

    “One more” is how bad things always start 🙂 . One more click is not bad but 1 click is better. Especially when you’re dealing with several non-maximized windows on a large high PPI monitor.

    Why do you prefer not showing the local menu of non-active windows on mouse hover?

  • Pingback: » How to install Ubuntu 14.04 LTS Trusty Tahr()

  • Sicofante

    Actually, here’s yet another proposal for the design team (hope you have a direct line to them, Marco):

    When windows aren’t maximized, use the global top bar to show the title and the window top bar to show the menu. Both permanently. Or if the user is using the global menu, use the global top bar for the menu and the window top bar for the title. No need to vanish anything with non-maximized windows!!!!

    On maximized windows only: use the current approach of vanishing something, but provide the user with the choice for it to be the menu or the title.

    That would bring consistency, efficient use of space and choice for everyone AND actually completely fix bug 682788, which this latest patch only half fixes.

  • Pingback: Ubuntu Rising: Desktops, Servers, Phones, and Beyond | Techrights()

  • Well, I think that decorations are to focus things first of all, then if we lose the power of focusing without causing any side effect, imho we could get more troubles. Also in windows full of widgets and clickable areas, and many menus this would be even worst.

  • Well, yes… But the problem is still having different approaches… Not sure we can.

  • Pingback: Ubuntu Unity to bring back local menus | g33k()

  • Sicofante

    I’m not sure I get it. You can’t technically? You can’t because of design issues? What do you mean by “different approaches”? John Lea’s proposal in the bug is addressing the two issues: the global/local nature of menus and their permanent/vanishing visibility. Only the first issue has been tackled by your solution. I’m proposing something that tackles both in a clean way and as part of your implementation (the opposite of a “different approach”).

  • No, I was talking of showing different things on panel depending on the window state… As it would cause an inconsistent behaviour.

    Anyway I’ll include a gsettings key to always show the menus soon (although it won’t be in unity control center).

    PS: feel free to ping JohnLea on IRC, if you want.

  • Sicofante

    Mmmm, I don’t see it inconsistent.

    Forgive my ignorance but I’ve never used IRC before (I guess I’m shy my English is not good enough for real time conversations). Can you point me to the specific channel where I can find John Lea?

    That gsettings key will be highly appreciated!

  • 2eurocents

    Mr. author, you should learn to express yourself more clearly.

  • @Sicofante:disqus don’t worry about your English!

    You can find him on #ubuntu-design (or #ubuntu-unity) channel btw.

  • Pingback: Cerveza Gratis 03 – emilcar compliant - Cerveza Gratis()

  • Pingback: Ubuntu 'Trusty Tahr' is a solid step forward, not a leap | Matias Vangsnes | Ubuntu VPS Hosting()

  • Felipe Uribe

    hello I love your work, in my free time experiment with the GUI.

    I have a question if you can change depending on bond css window.

    example in the terminal using css black metacity.

  • Choda Boy

    If you would have just listened to YOUR CUSTOMERS in the first place, the need to switch back to the menus-per-window design and the loss of a great many Ubuntu customers would have been avoided

  • Robert Cannon

    I’m 100% with Sicofante. I use Eclipse most of the time and of all the stuff on the screen, the 10 items in the application menu (with a couple of hundred options between them) are a vital part of everyday work. This piece of screen real estate is probably more important than any other equivalent are area in the whole application so having them playing hide-and-seek is intensely frustrating. I like unity in 14.04 but the only way I’ve been able to work effectively is just to uninstall all the appmenu-xxx packages.

  • Hi, I’d like to permanently maintain the LIM on the foreground window only while for the background windows I’d leave the window title because in this last case the user needs a macro informative content about the entire window ‘to decide if he should select it) and not a focus on details (LIM). As soon as the windows is selected (goes in foreground) the LIM will become permanent. Is it ok? Do you agree with this?

  • Tim

    I sort of hate this. I click between windows a lot and the only safe way to do that it hit the titlebar. 90% of the time I activate a menu I did not want to activate. Please just let me enable menu bars as they have always existed? It’s just better for me. I have enough pixels that I can spare them. Please?

  • You can both disable LIMs (from system settings) or using dconf or gsettings you can make them not to activate on unfocused windows:

    gsettings set com.canonical.Unity.IntegratedMenus unfocused-windows-popup false

  • Pingback: Ubuntu ‘Trusty Tahr’ is a solid step forward, not a leap | Matias Vangsnes()