Overview of Maemo 5 UI

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
  • 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 alpha 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

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.

1. Check out the svn trunk:

svn co https://garage.maemo.org/svn/maemoexamples/branches/fremantle-sdk-testing/maemo-examples/

2. Ensure that you have installed the complete SDK. Inside scratchbox, compile all applications using the command 'make' inside the maemo-examples directory.

3. Before you install the applets make sure that the UI framework & hildon-home process is running. Then run the helper script that installs the home applet.

af-sb-init.sh start


run-stand-alone.sh hildon-home &


./install_home_applet.sh

4. Add the following lines to ~/.config/hildon-desktop/home.plugins
(yes, you need to do this manually in this release, since the Home edit mode feature is missing.)

[hello-world-home.desktop-0]



X-Desktop-File=/usr/share/applications/hildon-home/hello-world-home.desktop

5. You will immediately see the example home applet in the Desktop area as follows:

home_screen_with_applet.png

6. Clicking the applet will display a dialog.

open_homeapplet.png

7. To install control panel applet, run the helper script and restart the UI framework for the changes to take effect.

./install_controlpanel_applet.sh 



af-sb-init restart

8. In the Settings application, you will see the example applet as follows:

control_panel_applet.png

9. Clicking on the applet will display a dialog.

open_contrlpanel_applet.png