Words from the inside

of Igalia

MAFW on Desktop


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.

Hildon Thumbnail

This library is in charge of creating thumbnails and extracting cover arts embedded in mp3 files.

Build the package downloading the source and applying a patch, or directly installing the binaries.


Tracker is an indexer and search framework.

Again, just download the source, apply a patch and build the packages.

Building mafw

This could be considered the base of MAFW. Download the source, apply this patch, build and install it.

Building mafw-shared

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.

Building mafw-tracker-source

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.

Building mafw-iradio-source

This source allows to store URL links for further accessing.

Again, like mafw-tracker-source, download the source, compile and install.

Building mafw-upnp-source

As its name suggests, this source allows to browse through an uPnP server and accessing its contents.

In this case a patch is required to build in desktop: download the source, apply this patch, and then compile it.

Building mafw-gst-renderer

Unlike the previous plugins, this one is in charge of playing the content provided by source plugins through gstreamer.

To build it, download the source, apply this patch, and make the package.

Again, as a remainder, in this port changing volume doesn’t work.

Building mafw-test-gui

This is just a demo example implemented on top on MAFW. It allows to browse through available sources and play the content.

Download the source, apply this patch, and build the package.

Using the binaries

If you prefer, binary packages for MAFW and dependants are also provided. Just download and install binaries for hildon-thumbnail, tracker and MAFW itself.

Running MAFW

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”

Launching MAFW

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:

$ mafw-test-gui

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!


  1. that’s awesome, thanks 🙂 it would be even better if you could be persuaded to bring official packages into debian and from there into ubuntu, seeing that you already did the debian packaging.

    mafw is nice already, but having it available on more computers (in this case: debian and ubuntu-based machines) would increase the likelyhood if it getting used and adopted very quickly by open source developers who develop for both the linux desktop and internet tablets.

    • Yes, it would be great if those packages were available in other distributions.
      But as I said, this is actually a quick port done so people can give it a try. But I would consider it a beta version.
      I think the right way of getting MAFW in desktop is in the trunk itself, adding the patches needed so MAFW can run both in Maemo and Desktop.
      Unfortunately, this isn’t a priority right now, and MAFW will continue officially supported only in Maemo.
      Nevertheless, if MAFW gets more and more attention from desktop community, it could add pressure to try to add official support for desktop too. But even if this pressure wouldn’t be enough, it could lead to create a fork to bring MAFW to desktop. You know, distributed control versions are great tools that make easy it.

  2. Juan, have you thought of creating a jhbuild moduleset to fetch all the sources, apply the required patches, and then build/install all the packages required? That would probably be more useful than packages for developers interested in running/hacking mafw in the desktop.

    • No, I haven’t. Thanks for the suggestion.

      But doing it would require an effort to maintain those patches up-to-date against MAFW’s trunk version. And as I commented, it would be even better if those patches were integrated in MAFW’s trunk, but that aren’t a priority right now.

      So the point is that it isn’t my aim to keep maintain the port up-to-date, at least for the moment. But let’s see if MAFW is attracting people from Desktop ;-).

  3. Hi webmaster – This is by far the best looking site I’ve seen. It was completely easy to navigate and it was easy to look for the information I needed. Fantastic layout and great content! Every site should have that. Awesome job

  4. Esto es muy útil para info.Thanks escribirlo.

  5. I appreciate your wordpress design, where would you down load it from?

  6. @Dettman:

    it’s called “Green Marine”. I think it comes into WordPress (or in an older version, not sure)

  7. I love your wp theme, where do you download it from?

Leave a Reply

Required fields are marked *.