Ubuntu Touch and Unity8

From Shutdown to Startup
24 July 2018

                                                A Quick History

                                                Nearly a decade ago, Mark Shuttleworth had the extraordinary dream of convergence: the idea that all manner of devices, from Internet of Things, through phones and tablets, to PCs and servers could use one code, in one language. Up until 2016, the Ubuntu desktop environment - called Unity7 - and Ubuntu Touch were one and the same discussion. Read more about that here.

                                                According to Wikipedia, the Unity user interface consists of several components:

                                                • Top menu bar – a multipurpose top bar, saving space, and containing: (1) the menubar of the currently active application, (2) the capture bar of the main window of the currently active application including the maximize, minimize and exit buttons, (3) the session menu including the global system settings, logout, shut down and similar basic controls, and (4) the diverse global notification indicators including the time, weather, and the state of the underlying system.

                                                • Launcher – a dock that also serves as a window switcher. Multiple instances of an application are grouped under the same dock icon, with a number of indicators to the side of the icon showing how many instances are open. The user has a choice whether or not to lock an application to the launcher. If it is not locked, an application may be started using the Dash or via a separately installed menu.

                                                • Quick-list – the accessible menu of launcher items.

                                                • Dash – an overlay that allows the user to search quickly for information both locally (installed applications, recent files, bookmarks, etc.) and remotely (Twitter, Google Docs, etc.) and displays previews of results.

                                                • Head-up display (HUD) – introduced with Ubuntu 12.04. It allows hot-key searching for top menu bar items from the keyboard, without the need for using the mouse, by pressing and releasing the Alt key.

                                                • Indicators – a notification area (similar to an OS X menu extra), containing displays for the clock, network and battery status, sound volume etc.

                                                On mobile devices users can access the whole system by swiping from the edges of the screen. A short swipe from the left edge allows for instant access to applications pinned to the launcher, while swiping all the way across reveals the home scope, which can be set by the user. This menu is available from the home screen and any running app.

                                                Ubuntu Touch's multitasking is accessed by swiping the finger from the right edge of the screen to the left, which switches to the previous application (short swipe) or shows all open apps (long swipe). Swiping up from the bottom is used to show or hide tools specific to the app being used, which gives Ubuntu Phone the ability to run applications with a large, uncluttered canvas by default.

                                                What looked like a shutdown...

                                                On April 5th 2017 Mark Shuttleworth announced that Canonical's work on Unity would end, and that Ubuntu 18.04 LTS, a year away from release at the time, would abandon the Unity desktop and employ the GNOME 3 desktop instead. Canonical had decided to move away from its ambition to produce a unified mobile phone and desktop operating system and concentrate on desktop, cloud computing and Internet of things platforms.

                                                ...Resulted in a startup.

                                                UBports founder Marius Gripsgård announced that the organization would continue Unity development.

                                                With this decision there arose a problem: the GNOME 3 desktop adopted by Canonical supports client apps using the Wayland and X11 protocols. In contrast Unity8 was based on apps using the "mirclient" API. The progress made by Canonical getting client toolkits and libraries to support "mirclient" faltered and went into reverse.

                                                Last February, in order to solve the compatibility problem vital for convergence, the UBports Community launched a dedicated Telegram group with the hope of spurring development activity around Unity and convergence. On the first day, approximately 50 people joined the initiative, and today there are over 200 members. Alan Griffiths, the leader of the Mir project, is one such member. Alan is with Canonical, and is an amazing asset to the Unity8 team and is in the middle of producing a series on different projects that use Mir with the first one being Unity.

                                                Game on!

                                                Unity8 is a key part of the Ubuntu Touch operating system. It's what gives UT “convergence”. Convergence is where an app has the capacity to morph from a phone or tablet user experience, with touch screen interaction, to looking like a traditional desktop app with window controls, and working with a keyboard and mouse.

                                                It's a central tenet of Ubuntu Touch, and it's what makes the Operating System so incredibly powerful. Is that a smartphone I see in your hand, or is it a fully-fledged PC?

                                                UBports' users are happily plugging their devices into monitors using a SlimPort adaptor, and pairing them with WiFi keyboards, in order to take advantage of a wealth of Free and Open Source software, like LibreOffice, Gimp and Firefox. And this is thanks to Unity8.

                                                Odoo text and image block
                                                 
                                                 

                                                But the power of Unity8 lies in its flexibility. It's designed not only to be able to work on smart-phones and tablets, but it can run on laptops and desktops too. Enabling Unity8 for the Ubuntu desktop is still a work in progress. However, you can install a preview (The instructions on how to do that are are here).

                                                There is also work under way to target other distributions, such as Fedora, Debian and Arch.

                                                Here's a video of Unity8 on Ubuntu 18.04:

                                                Unity8 uses Mir

                                                Mir simplifies the complexity that shell authors need to deal with; it provides a stable, well-tested and performant platform with touch, and mouse and keyboard input capability, and secure client-server communications.

                                                Mir deals with the initialization and configuration of a broad array of graphics and input hardware, abstracts hardware differences away from shell authors (transparently dealing with hardware quirks) and integrates with system components such as greeters.

                                                Mir’s modular design means it can integrate well with Qt/QML, meaning desktop shells can be written in a higher level language.

                                                • various panels

                                                • server-side decorations

                                                • transitions 

                                                • and animations

                                                Special thanks to Alan Griffiths for this article https://community.ubuntu.com/t/unity8-a-project-that-uses-mir/7188

                                                Project: https://ubports.com/ , https://unity8.io/

                                                Source: https://github.com/ubports , https://github.com/ubports/unity8