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

Welcome back on blog.3v1n0.net….

Me, behind UbuntuSalve gente! Oh, no ora si parla “inglese” via….

Hi there!
This is the first blog post here after soooo many years… Something like almost 7 years, really?!?

Oh, yes… You all thought that I was dead as a blogger I guess, and well mostly I am as my time for writing really went below 0 during this time, and then… Well as always I wanted to keep this thing updated following “my rules” of keeping the timeline in sync with actual events, but this failed everytime… And so, yeah here we are after so much time!

The main reason why I become unresponsive during these years was that instead of writing text, I moved to write code (for real) and I found it much more fun and useful for the people around me.

More importantly during this period my commitment with the Free Software  increased and I  joined or submitted patches to various projects such as Compiz, Openmoko, EFL (Enlightment Foundation Libraries), GNOME, and… Well how you might think from the pic, Ubuntu.

Ubuntu took a very important role in my life since about the last months of 2010, when Unity, was proposed as the new default desktop environment, I liked a lot the idea, but it was still a new baby with many missing features and bugs and so I decided to jump on the boat to give my help to make Unity the best desktop.
This involvement lead me to join to my first, beloved, UDS in Budapest where I met for the first time a lot of “ubuntu-dev-heroes”. Once back I continued contributing a lot, as I enjoyed so much that experience that I wanted to make it something more than just an hobby…
And well, long story short, I’m now working at Canonical for more than 2 years as a Software Engineer for the Unity Shell! I love this job and I think we’re doing great things, trying to make the Ubuntu vision happen in every form factor.

You might be able to read more about this experience on my Google+ page or looking at my opensource contributions at ohloh.

PS: But… Is still anyone reading? 🙂