Maemo 5 overview
The purpose of this article is to provide a high level overview of the Maemo 5 UI framework along with the changes since Diablo.
Architectural changes
The main changes to the Desktop domain are caused by the introduction and usage of Clutter as a way to access the hardware-accelerated OpenGL graphics functionality. It is assumed that we will have only one OpenGL drawing context, and thus a single process running in the system will be using Clutter at a time. This process will be the window manager and the implementor of all challenging graphical UI effects on the screen.
Top framework level changes from Diablo:
- Removal of left side Task Navigator and plugins.
- Removal of stylus keyboard
- Removal of help framework
- New design for task switching and task handling
- Renewal of Home and Status bar
- New design for incoming event previews and indications
- Widgets and application space renewal
- UI style changes.Eg: Navigation logic in applications, visual style of dialogs, menus etc
In Diablo, the single hildon-desktop process implemented the Home for desktop applets, Statusbar for the status applets on top of the screen, Task Navigator for launching and switching between applications, Dbus service for notifications and compositing functionality for transparency in applets.
Programming errors in these different types of applets often caused hildon-desktop process to crash and restart. After a restart following such a crash, hildon-desktop would only load a 'safe' set of applets, excluding applets that were not part of the sales package.
In Fremantle, the widgets (formerly known as applets) are removed from the process implementing window management, application switching, application launching and drawing of the Home. This separation will allow for better reliability in aforementioned functions, due to not having the widgets sharing the same memory space, not having the widgets starting separate threads of execution, and not having the widgets partake in the same Glib main loop as the process that draws the Home, implements application switching and launching etc. The separation will also make debugging of widgets easier because the widgets loader processes can be really simple and easily understandable by widget developers.
Brief overview of the Desktop domain
The Desktop domain comprises of four processes: hildon-desktop, hildon-home, hildon-status-menu and Hildon input method server.
The hildon-desktop process contains a compositing window manager, task launcher (Application Menu), and task switcher (for multitasking). Task launcher is a menu with icons to start applications. Note: The task switcher is not included in this alpha SDK release.
The hildon-home process contains notification manager, the background picture of the desktop and graphical widgets, that is, small applications, on top of the background. The widgets are Gtk+ applications implemented as dynamically loadable libraries, and they usually have smaller windows to render their content than ’normal’ applications. The widget windows are child windows of hildon-home’s top-level window. Notification manager provides a systemwide D-Bus service for displaying notifications on the screen.
The hildon-status-menu process implements the Status Menu and Status Area. Status Menu contains Gtk+ applets for displaying miscellaneous information and for controlling system settings. Note: This feature is not included in the current SDK release.
The Hildon input method server is largely stand-alone system for handling the full-screen (aka. ’thumb’) keyboard, hardware keyboard, and input focus.
Backwards compatibility
UI Framework
The use of desktop files for Task Launcher remains the same as in Diablo. The control panel plugin API is the same as well.
The example code for Home and Control panel applets can be found in garage svn. Additionaly, you can find many more test applications used for testing the SDK.
svn co https://garage.maemo.org/svn/maemoexamples/branches/fremantle-sdk-testing/maemo-examples/
Application Manager
In Fremantle, there are no submenu's such as "Utility", "Extras", "Settings" etc. All third party applications will be installed under "Applications". This makes the command "maemo-select-menu-location" obsolete. It is no longer provided by hildon-application-manager package.
Help Framework
Help framework is dropped from Fremantle. The idea is to keep the things as simple as possible within the UI of the applications. So there is no standardised way for help options and it is up to every application, which actually needs the help functionality, how to integrate it in the UI.