User Interface Development
The maemo platform’s basic starting point for graphical user interface programming is
the Hildon, an application framework comprising of a lightweight desktop, a set of
widgets optimized for handheld devices, a set of theming tools and other complementary
libraries and applications.
Hildon is based on GNOME technologies to a great extent. Compared to a
GNOME desktop from a user interface point of view, Hildon is designed to provide
a new desktop for mobile embedded devices. Therefore it for example uses a lighter
window manager called Matchbox.
4.1 Hildon desktop
The end-user’s desktop experience on Nokia Internet Tablets is provided by the Hildon
Desktop that is based on Hildon. The latter provides several libraries to interface with
the desktop environment UI elements and services.
Hildon framework’s main UI elements are separated to four categories and all of
them can be extended with plug-ins:
Hildon Home is the root desktop which can be customized by Hildon home
Hildon Status bar provides area for information and quick-access items used
mainly to communicate device status changes.
Hildon Task Navigator plugins implement the top level desktop menus.
Hildon Control Panel is a general interface for application configuration and is
extended by control panel plugins. See Hildon Desktop Plugins How-to for
more detailed information.
GUI applications in maemo usually have one or more HildonWindows which are
the top level application windows. They can include a standardized menubar and a
The Hildon framework also includes other auxiliary widgets and services specialized
for the Hildon environment. Examples of these are the Hildon-FM library
for file system dialogs and widgets, HildonBanner for displaying notifications for
user and HildonWizardDialog for creating wizard user interfaces. For informationabout Hildon’s widgets good resources are Maemo Tutorial and Maemo API
Another important element of the Hildon framework is the Hildon Input Method
API, which is an interface for creating new user input systems in addition to the included
virtual keyboard and handwriting recognition. Extending Hildon Input Methods
How-to describes the API’s usage in detail.
4.2 Graphical user interface elements with GTK+
User interfaces of maemo applications are created using GTK+ user interface
toolkit. GTK+ is widely used in UNIX GUI applications, perhaps most notably the
GNOME desktop environment is based on it. The Hildon desktop builds on top of
a modified GTK+ 2.10 called maemo-GTK+ 2.10 in a very similar manner - all
Hildon widgets are also GTK+ widgets.
GTK+ itself is based on and uses several lower level libraries with all having a
specific role. When developing applications using GTK+, usually the developer will
also explicitly use some of these libraries.
GObject provides object orientation by GType system and signal handling.
GLib has tools for general non-graphical programming tasks such as different
data structures, memory allocation, file operations, multithreading and
interfacing with the underlying operating system.
XLib is a library for interacting with an X server
GdkPixPuf is used for simple client-side image manipulation.
GDK is a library between Xlib and GTK that is basically used for drawing
widgets, handling window events and drag’n drop support
Pango is used for text rendering and layouting with solid internationalization
ATK, Accessibility Toolkit is used for providing GTK+ widgets accessibility