If you assisted the talk Iago did at GCDS’09 about MAFW, maybe you remember he showed a demo to explain some of the concepts managed in MAFW. And if you paid attention too you noticed the demo was running on a standard desktop, not in scratchbox. Yes, cool!
Though MAFW is a key component in Maemo 5, it doesn’t have a lot of dependencies from Maemo. Thus, it is relatively simple to port. And to allow people to play with MAFW even without a scratchbox, we ported it to desktop. So this post is about how to build and/or use MAFW on desktop.
Also, if you’re lazy, I’m providing the binary packages too. So no excuse to give it a try!
Before continuing, some points must be clearly explained. First, this is not an official port, but one we did in our spare time. The aim is to help people that want to take a look at MAFW without expending too much time installing a scratchbox. So do not expect any kind of support (well, not really true, you can still send me an email about issues you find, and I’ll try to help you as much as possible; but no promises at all). And to illustrate this is just a port with no guarantee, the current port has some already known issues: it doesn’t build on amd64 architectures, and changing volume doesn’t work. So consider it as a beta (maybe alpha?) version . Finally, the base packages provided are the same that come with Maemo 5 Beta 2 SDK. Our intention is to show the same experience you’ll get with Maemo 5 in the desktop.
Building packages from scratch
This section is intended for those who want to build the packages from the sources. The steps described here are meant for Ubuntu 9.04 (Jaunty), though probably would work with other distros with some minor changes. If you want to skip this section, at the end the binary packages are provided too.
Like other Ubuntu packages, MAFW has some requirements. Most of them are packages that come both in Ubuntu and Maemo 5. But a couple of them are special requirements, as they are only in Maemo 5. So I’ve ported them to Ubuntu. As MAFW, this is a quick port, so there aren’t guarantees everything will work like a charm. But so far, they worked fine for me.
This library is in charge of creating thumbnails and extracting cover arts embedded in mp3 files.
Tracker is an indexer and search framework.
This package allows to run each plugin as an independent process, using dbus to stablish communications.
In this case, it can be built directly in desktop downloading the source and building it. No patches are required.
This source is in charge of providing local content through Tracker. Thus, it depends on tracker and hildon-thumbnail.
Building mafw-tracker-source is as easy as downloading the source, compiling and installing the packages.
This source allows to store URL links for further accessing.
Again, like mafw-tracker-source, download the source, compile and install.
As its name suggests, this source allows to browse through an uPnP server and accessing its contents.
Unlike the previous plugins, this one is in charge of playing the content provided by source plugins through gstreamer.
Again, as a remainder, in this port changing volume doesn’t work.
This is just a demo example implemented on top on MAFW. It allows to browse through available sources and play the content.
Using the binaries
Verifying requirements work fine
Before starting MAFW, we want to be sure that everything works O.K. At least, mafw-tracker-source and mafw-gst-renderer, so we will able to play some song.
First of all, we need to verify tracker is working and indexing fine. I don’t want to spend time here. So the easy way of checking it is getting the music indexed by Tracker:
$ tracker-files -s Music
This should show all songs in the home. Tracker have some kind of delays to avoid wolf down all resources. So maybe it could take some minutes before showing any clip.
The second issue to verify is gstreamer can play fine. I suggest to install all gstreamer plugins to be sure everything will work fine. You can test by playing some clip with “gst-launch-0.10 playbin2″
Now, time to launch MAFW.
Each plugin will run in its own process, and they will communicate among them through dbus. So let’s launch them:
$ mafw-dbus-wrapper mafw-iradio-source &
$ mafw-dbus-wrapper mafw-upnp-source &
$ mafw-dbus-wrapper mafw-tracker-source &
$ mafw-dbus-wrapper mafw-gst-renderer &
Finally, launch the demo program that comes with MAFW:
If everything went fine, you will be able to browse through your local music (and uPnP servers if available), create playlists and play them.
Enjoy the concert!