In this technical article, Matchbox project leader Matthew Allum introduces his creation: a small footprint window manager for PDAs and other resource- constrained embedded devices. Allum recalls why he decided to embark on the project, outlines its key objectives, describes its architecture and unique characteristics, and ponders its future . . .
by Matthew Allum
Remember when Compaq first published the screenshots of their 'new' iPAQ PDA running Linux?
Amazed by this, as soon as the iPAQ initially became available I was quick to purchase one and took the, then, risky steps of braving a Linux install. Thankfully, my experiment was successful and I was soon greeted with a 240×320 X Server display running various simple X apps.
After the realization that the only real limitation was disk space, it wasn't long before much more exotic applications were cross compiled or borrowed from Debian ARM distribution and made available for the iPAQ. However, something soon became very apparent: the small sized display and limited input meant that although apps ran, they were uncomfortable to use.
One of the main causes of this was that existing window managers weren't designed to cater to such a small display, let alone a touchscreen and virtual keyboard or stroke recognizer for character input.
I realized a window manager designed with these constraints in mind would prove a great help. I bought a book on xlib and began work on . . . Matchbox . . .
Maximizing usability on constrained platforms
Matchbox is a window manager that aims to maximize usability on 'limited' platforms. It is also designed to be small in terms of binary size (approx. 50 KB), have few dependencies (only xlib), use minimal system resources, and be extremely flexible.
Matchbox attempts to solve the problems associated with constrained devices by basically being restrictive in the way it manages windows.
Application windows that give no special hints to the window manager are sized to all available space. Only one of these 'main' windows is visible at any time. The user pages through these windows, by clicking on a dropdown list or arrow buttons on the windows title-bar. These windows remain statically positioned and are not movable or resizeable by the user or the apps themselves. This may sound problematic, but in practice it works well.
Windows that supply 'hints' to Matchbox are treated differently. For example, dialog windows work just like dialogs on other window managers, except they are 'attached' to the parent main window and page with that.
Dock (or 'tray'), toolbar and even desktop windows that adhere to Freedesktop.org 'net wm' hints are treated specially. Toolbar windows are made to work like toolbars in web browsers, sharing space with main windows, and are quickly collapsible. A good candidate for a toolbar window is an on-screen keyboard (see xkbd).
Other unique features
Matchbox also has a number of other fairly unique features.
For example, doubling clicking window titlebars will make them collapse, freeing more screen space.
Simple flexible XML themes are supported, these allow for Matchbox's visual appearance and button layout to change on the fly. Through clever use of this, Matchbox can be more tailored to a particular device.
A popular small XServer for Matchbox is Tiny-X. Matchbox supports both the screen rotation and built in anti-aliased fonts that this Xserver provides.
Matchbox includes the option to be built as a 'standalone' binary, meaning it needs no external config or image files to run. This is particularly useful when testing Matchbox on a new device.
The Matchbox tar ball also includes a number of other utilities. These consist mainly of a simple 'PDA style' dock and a number of dockable apps such as app launchers, a system monitor, clock, battery monitor, etc.
Where Matchbox has been
Matchbox is probably most popular on iPAQs running X and Linux. Both the Familiar and GPE projects use it, as there default window manager. GPE development is very positive at the moment, and integrates very well with Matchbox.
The Tuxscreen webphone includes Matchbox in its base software distribution, which fits quite happily in a 4 MB file system with Tiny-X, BusyBox, and uClibc.
Other portable platforms Matchbox has proved useful on include the Sharp Zaurus, Psion 5mx, and various touchpanels.
I've also been told small children enjoy using Matchbox on desktop machines, due to the way it simplifies the desktop and integrates well with recent versions of GNOME and KDE.
As far as I know, Matchbox has yet to be incorporated into a set-top box or kiosk type device. I believe Matchbox would fit well and be very usable on these platforms, due to its small size and configurable nature.
The future of Matchbox
I'm pretty much happy with Matchbox's current functionality, I'm wary of adding more major features, as I don't want to introduce any unnecessary bloat. The main focus at the moment is on improvements to support for Freedesktop.org's 'net wm', better I18N, and, of course, fixing any bugs that show up. Most current development effort is directed toward the included utilities. I'm also considering a possible port to Microwindows.
Matchbox is GPL licensed. You can get it in source form from the Matchbox website. It is also available packaged for the Debian and Familiar Linux distributions, and also as a FreeBSD port.
Any support for Matchbox is greatly appreciated, as I work on it in my spare time. Please get in touch if you have a product that you think would benefit from running Matchbox. Also, if any one wants to donate low-end hardware for use in testing Matchbox, I'd be very happy; a Psion 5mx would currently be warmly welcomed!
References . . .
- Matchbox Homepage and documentation
- Familiar Linux Distro
- Other software by Matthew Allum
About the author: Matthew Allum is a 27 year old freelance programmer living in London, England. He's been interested in Linux for a number of years and is currently focused on improving its suitability for personal/portable platforms. When he's not hunched over his laptop, Allum enjoys spending time with his fiance, Sidske, and his cat, Lazaru. He dreams of one day owning a circa-1960 Shelby Mustang.
This article was originally published on LinuxDevices and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.