Aggregated User Interface for Mobile Devices
- Status and features
- Design choices
AUIMD is a graphical environment for mobile devices, aggregating already existing components.
In itself AUIMD brings few added value : its main feature is to gather dissociated but proven components, in a single application. The main goal of AUIMD is to assemble some already existing existing softwares, in order to provide a user friendly environment. Currently MPlayer, Matchbox Keyboard, mrxvt are simply integrated through XEmbed. AUIMD also acts as a sort of fullscreen window manager so that regular X11 applications can be used easily.
Additionnaly AUIMD provides a very basic ground for easy and fast building of small applications (called widgets). See the widget tutorial for how to create widgets.
Other components can interact with AUIMD through a DBus interface. For instance a new widget can be started through the following method call :
dbus-send --dest=net.pierrox.auimd /Desktop net.pierrox.auimd.Desktop.StartWidget string:"WebBrowser" array:string:"http://www.pierrox.net/"
AUIMD currently uses Freesmartphone.org APIs for phone calls, and other things such as battery level reading.
AUIMD is primarily built using Python/Qt4. It runs on a GNU/Linux platform providing X11 display, with or without window manager (VGA preferred, but support for QVGA is ongoing). AUIMD has been tested on ARM based devices with at least 400MHz CPU and 64MB RAM (Eten G500 and HTC Universal).
AUIMD is currently on hold. I do not actively work on it. I do however provide support when needed, and I do not exclude to come back on it.
Don't expect from AUIMD a completely functional and polished environment. It has some rough edges and is more a proof of concept than a complete environment. That said it is quite usable and provides the following features :
- a desktop, with some sort of virtual size configuration
- virtual keyboard (Matchbox Keyboard)
- terminal (mrxvt)
- video player (MPlayer)
- web browser (WebKit)
- a tetris game
- a note applications
- a sort of « task manager »
- a phone application, with call log and basic contacts management
AUIMD needs at last :
- python (2.4 or 2.5)
- PyQt4 bindings
- python dbus bindings
Additionaly AUIMD benefits from these packages :
For Debian like distributions the prerequisites can be installed with :
apt-get install python-qt4 python-qt4-dbus x11-xserver-utils mrxvt mplayer matchbox-keyboard xserver-xephyr python-xlib python-pysqlite2
A debian like distribution is not required in any way, but the armel Debian port is a recommended choice for setting up a first environment for ARM based devices.
In order to install an run AUIMD, simply extract the source archive and execute auimd.py :
tar xfz auimd-<version>.tar.gz cd auimd-<version> ./auimd.py
FreeRunner Debian root filesystem
For FreeRunner owners, a ready to use root filesystem is available, it is based on Lenny and only includes the minimal set of packages needed to run AUIMD. This root filesystem does not fit on the flash (~362M), so it must be copied on the microSD card. The root filesystem MUST be used with the associated kernel, both can be found below :
- kernel : uImage-2.6.28-oe1+gitr34240a1c06ae36180dee695aa25bbae869b2aa26-r3-om-gta02.bin, rename it to uImage.bin and put it on the first partition, which should be FAT
- root filesystem : lenny-armel-gta02-auimd-0.3.tar.lzma, extract this archive on the second partition (either ext2 or ext3 depending on your bootloader configuration)
- root filesystem MD5 sum : 0f31ed408f2f690df4ffb17652d2fc78
Be patient while the GTA02 is booting, it will take 3 minutes to reach the home screen. The root password is "root" and the usb device is configured as ethernet gadget IP 192.168.0.202. Instructions on building the root filesystem can be found in this HOWTO.
AUIMD can be launched in its own window on a desktop PC, or fullscreen as the main application on a handheld device. Since AUIMD is platform independant, it is convenient to create and test applications on a PC and then be confident in the fact that it will run (more or less) the same way on the device.
AUIMD - Aggregated User Interface for Mobile Devices. Usage: ./auimd.py [options] Options: -device
Set the hardware type (default='dummy', show available='list'). -fullscreen Use the whole screen and a frameless window (default=no). -no-cursor Hide the cursor (default=no). -embed Embed into an existing window. -help Print this message. Some other Qt/X11 usefull options: -display X11 display to use, default : $DISPLAY -geometry Window geometry, overriden by -fullscreen
SVN repository : http://svn.pierrox.net/auimd/
Main architecture design choices are :
- use a script programing language (high level, supposedly better productivity, mostly architecture independant)
- use X11, for its wide range of features and available applications
- reuse existing components when possible, most notably using XEmbed
- monolithic, keep the whole GUI in one processus :
- reduce scripted application startup time
- share and save script engine resources
- that does not mean that no other processes are running
- keep complexity as low as possible
Released unser the GPLv2. See http://svn.pierrox.net/auimd/trunk/LICENSE
All icons come from the Crystal SVG icons from KDE 3.5.10.
If you feel interested in this project (even if it is on hold!): pierrox (at) pierrox dot net.