Planet Nemo


Aleksi Suomalainen

Nemo Mobile distribution installation on a Jolla device


"Our warranty does not cover issues arising from using unauthorized software on the device. If installing the alternative OS causes problems with the hardware, these are not covered by the warranty even if it happens during the warranty period. The user would likely also lose the benefit of their statutory rights to have errors repaired. In other words, anyone trying this would do it at their own risk, we can’t be responsible for the outcome nor can we publicly encourage people to do this."


1. Extraction of certain packages from Jollas repositories, with "zypper install -f --download-only" and rsyncing them to a separate directory on the Jolla device:


2. Copy over the aforementioned packages to a directory in which the Mer SDK resides and can access.

3. Copy over configuration files from Jolla device:

rsync -R /etc/dconf/db/vendor.d/locks/screen-rotation.txt /etc/dconf/db/vendor.d/screen-rotation.txt /etc/dsme/battery_levels.conf /etc/dsme/temp_hw_battery.conf /etc/dsme/temp_hw_core.conf /etc/mce/60-als-jolla.ini /etc/mce/60-doubletap-jolla.ini /etc/mce/60-mce-display-blank-timeout.conf /etc/mce/60-mce-display-brightness.conf /etc/mce/60-mce-possible-display-dim-timeouts.conf /etc/ofono/ril_subscription.conf /etc/usb-moded/android-usb-values.ini /etc/usb-moded/usb-moded.ini /lib/systemd/system/ /lib/systemd/system/create-swap@.service /lib/systemd/system/dev-mmcblk0p24.swap /lib/udev/rules.d/90-toh.rules /lib/udev/rules.d/999-boston-system.rules /usr/lib/oneshot.d/bdaddr-from-factory-data /usr/lib/oneshot.d/btrfs-autodefrag /usr/lib/oneshot.d/resize-filesystem /usr/lib/qt5/plugins/feedback/qtfeedback-sbj.ini /usr/share/ngfd/plugins.d/ngf-vibra-sbj.ini /usr/share/qt5/keymaps/boston.qmap /usr/share/ssu/board-mappings.d/05-sbj.ini /var/lib/environment/compositor/60-boston-ui.conf /var/lib/environment/nemo/60-multimedia.conf /var/lib/environment/nemo/60-sbj-vibra.conf /var/lib/environment/ofono/noplugin.conf to@dest.mer.machine:adaptation

4. Copy over /sbin/preinit from Jolla device to a separate directory on the Mer SDK host.

5. Create a image using mic2 and Nemo Mobile system packages:
sudo mic cr fs -A armv7hl -o nemo-sbj-armv7hl-devel --pack-to=nemo-sbj-devel.tar.bz2 --record-pkgs=name,url,content,license jolla-sbj-adaptation.ks

The kickstart file is here

6. Add the missing configuration files and /sbin/preinit to the created root filesystem package.

7. Copy the root filesystem package to a microSD card. Transfer the microSD card to a Jolla.

8. Reboot jolla to a recovery mode using Volume Down and Power key, use the recovery mode selector to move to a shell.

9. Inside the shell, copy a fresh installation of the sailfish-snapshot script manually to a text editor.

10. Mount the sdcard inside the shell

11. Go to the sdcard directory and issue:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script export factory .

12. Back up the current system with sailfish-snapshot:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script create prenemo

13. Inject the Nemo Mobile root filesystem package to a new snapshot on the Jolla device, with Jollas default home filesystem:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script inject nemo-sbj-devel.tar.bz2 homefs-factory- nemo

14. Make the nemo snapshot the current system:
PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script restore nemo

15. Reboot the Jolla device to activate Nemo Mobile

To get back to SailfishOS:

1. Reboot Jolla back to recovery mode.

2. Enter shell and get sailfish-snapshot to it.

3. PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script restore prenemo

by Aleksi Suomalainen ( at 2014-12-11T16:25:48+00:00



New homescreen edit mode

Due to feedback and to better align with our goal to provide glacier-home as a drop-in replacement for jolla home, here’s a new mockup of the home screen edit mode.


by qwazix at 2014-08-06T16:46:45+00:00



What is Glacier and where are we headed.

I see people asking what is Glacier on IRC so I thought I’d write up a short piece about it.

Nemo is a mobile Linux distribution. It is based on mer core and provides a UI for it.

Historical note: Until recently Nemo also provided the middleware, which is pending to be folded into Mer simplifying things.

UI can be divided into three subcategories

  1. The controls: buttons, sliders, menus, tabs etc etc
  2. The home screen: the interface you see when you light up your device, think of it as the Desktop Environment on your desktop Linux distribution, e.g. Gnome Shell
  3. The core apps (phone, calculator, browser etc)

Nemomobile supports themes. The default theme (think Adwaita) is Glacier. Just like Android 3.0+ has Holo as it’s main theme. We plan adding an alternative theme, Breeze, when and if there is enough interest.

Most of the controls are already completed. Some of them need polish but they are mostly usable.

Most of the nemo applications still use the old Harmattan-ish look, and some are outright missing, with the biggest absence being a modern browser. The applications need a lot of work in order to be Glacierified and some of them still need to be coded from scratch. Due to limited time and contributors this will take some time.

We are very eager however to get our work to real users as soon as possible. Doing that will also help get more contributors. Scratching an itch is the cornerstone of the OSS world and we want to give developers an itch to scratch. Since we share a lot of common code with Sailfish, the Nemo homescreen can run unmodified on top of Sailfish. Thus, our short term goal is to make Glacier Home a viable alternative to Jolla home, just like the countless android launchers that are available on Google Play.

This means you get to experience the Nemo homescreen, any Nemo apps you want, plus all your Sailfish and Android applications. Things like the missing browser are no more a showstopper for using Nemo as your day to day phone OS as you can substitute the sailfish browser or your favorite Android browser. Of course consistency takes a big hit, but it’s a fair price to pay.

The next step is to provide a compatibility layer for Sailfish applications to look native on Nemo/Glacier, and finally finishing the applications that we need to have a workable and visually consistent open source OS

For the record, I’m currently using the heavily WIP (by locusf) Glacier Home on my SbJ and here are my notes about what works and what doesn’t. We are almost there so any brave soul that wants to dive in and gain an itch to scratch, follow this guide to try out the latest nightly

by qwazix at 2014-07-24T21:26:43+00:00



homescreen folders


The folder should slide down when it’s icon is tapped, pushing everything below, just like the sailfish context menu does. We might consider flying the icons from the folder icon to their positions when the folder opens, but I don’t really know if this is too much animation.

The folder icon consists of the first four folder icons, at 90% of their normal size, overlayed and semi-transparent (0.6 opacity). Their follow the pattern below


If icon 1 is at coordinates 0,0 icon 2 has coordinates 6u,-6u icon 3 has -6u,6u and icon 4 6u,6u

by qwazix at 2014-07-13T14:49:10+00:00



A geeky personal assistant

Most of our interactions with a computer start with a text input box. Either the start menu, Google, or the browser url bar.

The new personal assistants devised by the big software companies are robots that are created to obey our commands and do what we tell them


Jurassic Park Computer

wasn’t the original command line exactly an attempt to do that? The 1970’s and 1980’s processing power and computer programming accumulated knowledge wasn’t enough to make this interface easily usable and the focus shifted to other things like buttons and menus. The few features of those programs made it easy to arrange a set of icons of the screen one for each function.

Once the features started to increase, deeper and deeper menus and dialogs proliferated and finding a function or option was obviously harder when digging through endless windows than searching through a text file. But searching through text files or using the command line was already deemed old-fashioned and forgotten.

Even today, when somebody sees me typing into the linux terminal I get all kinds of reactions of awe and disgust , as if I am doing something magical. Most things I do through the terminal however are really easier to do that way.

 $ convert image.png image.jpg

for example, is much easier than opening the image in GIMP, waiting for it to load fonts and extensions and then hitting file > export and then OK twice

So, what is the problem?

Discoverability. It’s hard to know what command to use and what it’s syntax is. This is greatly exaggerated by the multiple developer nature of GNU/Linux as each command has it’s own syntax and there is no consistency whatsoever

tar bomb

Can it be fixed?

In my opinion, easily. Using standard tools like aliases to make commands have more obvious names and by taking ideas from modern IDE’s to add visible autocompletion and help messages. This needs a couple of brainstorming sessions but here’s a first idea

terminal autocomplete preview

How this affects nemo?

Nemo’s target audience, at least for now are geeks: Geeks like telling their computers what to do and are not afraid of using the terminal. So my proposal is to modify the home-screen search box to also accept terminal commands.

homescreen search view

The commands will have a faded autocomplete with included help, and the various autocompleted options will transform into drop down menus when clicked. All this functionality will use plain old bash autocomplete to work.

homescreen search autocomplete drop down

Bash autocomplete can also be used to increase the size of the keyboard’s sensitive area for letters that are more likely to be next.

More traditional commands will be executed and the output will be printed in the results space in monospaced font, along with some relevant options.

homescreen search terminal view

There will be a whitelist for commands that execute instantaneously and the output of those commands shall be displayed as-you-type in the space below the search box

What is needed?

Not much. Apart from some GUI work, we just need to create sane aliases and commands for most phone functionality. These commands should be a bit lax on the syntax, for example the call command should accept call <contact/number> [[on|at|] <numbertype>] so all of call Eva at home, call Eva on mobile and the more classic command-like call Eva mobile produce valid output.

There is no need to accept please call Eva on mobile as the goal is not to create a natural language parser but rather to be similar enough so that commands are easy to remember.

by qwazix at 2014-05-18T16:51:33+00:00



An attempt for a better mail client

I am a huge fan of mail clients. It was a time where I used to check every once in a while if new ones were available for my platforms. To tell the truth, I was rarely impressed.

What I found is that trends come and go, and devs tend to follow them blindlessly, mostly to get attention and money (the « mine is better than yours » addage). Sometimes, one stands out and got my particular attention. I’ll get to it in a minute. But right now, let’s review the competition.

Today, the trend is at action-based emails: set reminders, put them in your todo list for later review, file them in lists or folders, etc… We have Mailbox, Mail Pilot, Boxer, Dispatch… to name a few, while -sorry- they’re only for ios platforms. Another trend is at quick review clients, where you have your mails stacked and just flick through them quickly to get « inbox zero », the real trend behind them all.



Up there are in order of appearance: Mailbox and Triage for iOS

Stock mail clients are quite raw around the edges, some better than others. I didn’t try all of them but the most popular ones (android, ios…) and of course harmattan. They do the trick, but that’s all, no fancy here, just plain old mail management with no real advanced functionnality.


Stock Android client

Do we want advanced functionalities ? Do we need « inbox zero » ? Or is there something else that could be done to be more productive on mobile devices ? Of course, some of us like lists or folders, some like « uncluttered », but did they have the opportunity to try… well, something else ?

That’s where I stumbled upon Unibox. It’s a mac only client with a particular, unique philosophy: sorting mails by « people » instead of « conversations ».

2014-05-11 at 18.21

Unibox for Mac, with it’s view “by people”

So simply put: you have a list of senders sorted by most recents, and choosing one show you *all* mails and conversations from him/her. Coupled with a good search engine, I believe this is a good workflow. Again, with the choice to sort by « people » or just « conversations » (have them both), this become a killer one. And that’s actually what lacks for Unibox in my eyes: an old conversation could be burried behind tons of new mails, even if they’re marked as « unread ». Quite a bummer that we tried to overcome in our new concept.




From top to bottom is older concept to newer one, aimed at simplicity.

Specs coming soon.

So basically, it’s two mail clients philosophy in one: people and conversations. The new, interesting concept and the old, legacy one.

I’ll let you judge by the screenshots, and encourage you to give your opinion or ask questions in the comments.

by sandy_locke at 2014-05-11T16:29:57+00:00



time and date pickers

Following this post I completed the specs for the time and date picker. Here’s a sneak peek: tmp_datepicker


please comment if I missed something

by qwazix at 2014-04-17T15:44:48+00:00



the homescreen

This is the first draft of the homescreen. Next up is a visual guide of how everything stacks up.

We are keeping the basic layout of Harmattan with three homescreens. The events screen stays almost the same with the difference that the user can act upon the entries there (reply to a tweet etc). The app grid has the added functionality of widgets. Widgets can be tied to a specific app, or be an app by itself (i.e. an app that doesn’t have a full screen UI at all). Widgets are configurable, and can be configured by pressing the pencil button in edit mode. Pulling down beyond the first row should reveal a search box, just like on Harmattan mail application.

The multitasking view gains the possibility to pin applications to specific positions, just like the new tab page of firefox. Pinned apps should autostart at boot.

The notifications section is grouped by person instead of by app. I think this is a more natural approach, but I’d like your feedback on that.


Edit mode can be activated by long tapping on any icon. There you can change positions of apps and widgets, or throw them away by dropping them over the top area of the screen. Flicking them to that direction should also work (see android desktop for that effect).


by qwazix at 2014-04-06T15:20:49+00:00


Aleksi Suomalainen

Glacier UI homescreen on Jolla

Tampering with custom repositories on Jolla might leave you with a bricked device, please take care to follow instructions and do this only if you really know what you are doing! This requires developer mode to be enabled on your device.

First, download a couple of RPM packages, package1 and package2 (for glacier gallery download this package). Then in your device, preferably do this over ssh, do this:

ssu ar nemo-devel-mw
ssu er nemo-devel-mw
ssu ur
pkcon refresh
cd /home/nemo/Downloads
pkcon install-local qt5-qtquickcontrols-nemo-5.1.0-nemo1.armv7hl.rpm
ssu dr nemo-devel-mw
ssu ur
pkcon refresh
pkcon install-local lipstick-glacier-home-qt5-0.0.0-1.armv7hl.rpm
# Then do this:
systemctl-user restart lipstick.service 
# After you have done testing it
pkcon remove lipstick-glacier-home-qt5
pkcon install lipstick-jolla-home-qt5
systemctl-user restart lipstick.service

Thats it then, you have successfully tested the Glacier homescreen experience on your Jolla device, good luck testing it :)

by Aleksi Suomalainen ( at 2014-03-20T17:15:22+00:00



some thoughts about sailfish

My first thoughts about Sailfish were that it was a bit too convoluted, that they broke their own architecture of hierarchy either in app or out, at random.

I also didn’t like the new fade effect instead of harmattan’s swipe, and thought of it more as a patent avoidance issue.

Now I think I was wrong. I was trying to find an analogy to the actual world and I constructed one, then thought that some parts of the OS were breaking it. Truth is there wasn’t one.

The fade animation I mentioned above is not just a different way to handle swipes. It tells you right in your face, that there aren’t any layers. You can swipe from the same edge to toggle two views: good luck finding a structure with a physical equivalent that has this property.

iOS’ 6 skeuomorphy was a visual one. Harmattan’s was a structural one. You could always have an analogy of layers in your mind which helped you remember where you were supposed to find things. Like all other real-world analogies, they are good as long as the user is unfamiliar and hasn’t yet fully embraced technology, but after a tipping point it becomes an obstacle, and one very difficult to overcome, just because **everybody else does it that way**

For how many years have we put up with an inbox and outbox in our mail/sms software? It has clogged the internet and filled our mails with TOFU replies just because years ago we had inboxes and outboxes on our physical offices. It is obviously better to sort by conversation, we were just too blind to see it.
Files and folders in filesystems are another example. In the real world you can’t put a file, the same one (as in if you change one, changes appear in the other location too), in two places at the same time. We still keep that limitation in modern operating systems, despite being only a logical one. Hardlinks are supported by all modern filesystems, yet there is no integration in any modern OS. (On the other hand, GMail has abused IMAP folders -calls them labels- to put an email in two folders at once).

Sailfish has gotten rid of the structural skeuomorphy. And it’s beautiful. It allows gestures to be general purpose, just as software buttons are. A swipe right can mean different things, like Accept, or go to relevant information, or something else. Visual cues are there to teach you what a swipe will do at each time, you just need to erase your muscle memory and look before you swipe, just like you look at the label before you press a button. Is it slower? Maybe. But it allows for so much more functionality without adding clutter that it’s worth it. Because there are countless times where you can’t put something there just because it breaks the self-imposed structure.

This is the reason most reviews said it’s too complicated: you can’t expect things to be in a certain place neither because they are there in other platforms, nor because they follow a replica of a physical media. You have to learn where things are. But they are a few of them, they are easy to learn, and that effort is well-compensated with the ability to do more with less clutter.

I’ve got some concerns on the other hand too, however: silica is too much focused on listViews. A great bunch of content-consuming apps are really lists, but the current offering seems unable to support productive apps. What about editing a 10-page long document? Will I have to scroll to the top to access the pulley? How would a context menu on a page look like? Is it up to the developer to decide?

Even if the current component set is to be streched to it’s boundaries to support more advanced applications than your run-of-the-mill twitter client, I think that some official mockups would help a lot to establish UI practices.

Sidenote: I’d like if a swipe back from a specific view could be ‘undone’ just like forward in the browser, or like the nautilus breadcrumbs: as long as you don’t branch away from the path, the forward/deeper history remains.

by qwazix at 2013-12-23T19:57:19+00:00


Javier Romero


Notes on open source and random ramblings

MOSH for Sailfish

So I finally have my own Jolla, paid for as customer 194 during sales launch last Wednesday.

One essential thing is to have access to my irssi shell, and as this is a mobile device it is essential to have MOSH (Mobile Shell), a UDP based secure shell client. As it will switch over from WiFi network to mobile data and back to WiFi a lot and reconnecting every time sucks and takes too much time.

So I looked if there is MOSH in Nemomobile, because that would be directly installable. Yes! There is Mosh in Nemomobile, but for some reason the build is broken. So I quickly rebuilt that in my home project.

Here’s how to get it running on your Jolla (or Nemo) device right now:

ssu ar tbr-mw
ssu ar tbr-apps
pkcon refresh
pkcon install mosh

In the long run we’ll hopefully get the package repos fixed for Nemo and then you’ll be able to use those directly, or we’ll add an Sailfish specific project in OBS.

(Do NOT ask me why it thinks ‘make’ is a installtime dependency! I just clicked stuff in OBS. I’ll try to fix it and send a pull request to Nemo.)

by Thomas B. Rücker at 2013-12-01T12:22:09+00:00



Quest for unobtrusive dialogs

What’s the most common dialog UX you see when you use a computer, irrespective of OS? I’d bet the « OK » / «  CANCEL » type. The one that appear in the middle of your screen, yet can be moved in a less annoying place to let you see what it is talking about. This is for computer : you are asked to give immediate attention, with possibility (most of the time) to focus on another task and answer later.

With mobiles, that’s another story. Lack of screen real-estate does not allow for a convenient way to « move » a dialog, so they just appear and you have to deal with them now.



They could have made this more seamless, don’t you think ?

But, let’s get back to computer for a minute… As it always been like that ? I mean, OS wise, dialogs are almost always obtrusive, coming in the way that you like it or not.


This is where it all began ;)

Yet, if you’re familiar with command line programs, and particularly DOS programs with a GUI from the early 90’s, you’d know that first GUI’s “dialogs” weren’t always obtrusive. Sometimes, since they were half textual/half graphical, they queried right at the bottom of the screen. Usually you’d have to press a key, but sometimes they’d appear complete with an « ok » / « cancel » type button (I remember a GUI for Povray that used those kind, although I couldn’t find a screenshot to show you). Those were not in the middle of the screen and you could see relevant stuffs you were doing before the query.

melody_makerYes, I dare to call that a dialog! (a query notification if you prefer)

So unobtrusive queries exist since the 90’s. They were actually dialogs. The first unobtrusive dialogs. They asked or proposed the same thing as plain sight ones, but did it discreetly.

Old concepts of obtrusive dialogs are not relevant anymore, with mobile devices and enhanced multi-tasking in the game. In the first case, you’re back to the good old command line situation: the query dialog will not allow you to embed that much informations, due to screen size, so why use the whole screen? In the second case, well, you know: why be obtrusive when you can simply appear and disappear while the user do his stuffs ?

2013-11-28 at 03.21QtControls

Screen edges notifications have always been there … (yes, it’s nano, but you know what I’m talking about – to the right is nemo notification concept, which shrinks the screen and disappear with a swipe)

That, industry giants have understood only since a couple of years, and it’s seen as the notifications revolution, while the idea was there since the beginning, only nobody seemed to have noticed… Yes: notifications are another form of dialogs, let’s say « semi-passive » dialogs ;)

So let’s extend this “new” notification dialog concept to query dialogs, and see what we can do.

Well, what are we looking for exactly ? What do we need, dialog wise, when we’re not looking for « semi-passive » notifications ?

– Query dialogs for really important matters (you need to answer it now, and I will not let you procrastinate while I’m asking!)

– Normal dialogs for casual stuffs (you can continue your work, but would be good to answer soon: you can’t dismiss me, but you can still do limited stuffs while I’m displayed)

– Inline dialogs (there’s some added stuffs you can do here, so take a look and dismiss me when you’re done, I will not stand in the way)


Obtrusive, full-screen, not avoidable dialog. For critical matters only!


Appear at bottom, allow limited multitasking (like scrolling text, etc…), non obstrusive yet functional and informational.


Inline dialogs: you tap, it appears, you select, it disappears. Simple, yet elegant. And cherry on the cake : customizable by developers.

Working demo : link (use chrome if possible)

So here we are, new concepts are on the way, everybody trying to find something more intuitive than the competition, and that’s our take. You still have obtrusive dialogs, but we’ve decided it was impossible to avoid. Otherwise, Nemo Mobile will try to bother you as less as possible.

What do you think ?

by sandy_locke at 2013-11-28T03:17:28+00:00


Aleksi Suomalainen

Adding armv7hl target to Sailfish SDK

One day I was talking with David Greaves on IRC about the possibility to add an armv7hl target to Sailfish SDK, namely Qt Creator component, as the SDK is based on Mer Qt Creator but Mer's Qt Creator is a bit outdated as it doesn't support Qt5 as Sailfish SDK does. David said that the fix for adding cross-tools to Mer SDK virtual machine shipped with has not yet been released but I got the manual fix from him, so here goes:

First go to your Mer SDK VM:

ssh -i ~/SailfishOS/vmshare/ssh/private_keys/engine/mersdk -p 2222 mersdk@localhost
sudo -s
Edit your /usr/share/ssu/repos.ini, go to [release] section and add to end:

Also one must add mer-cross to: [default-repos]
Exit your editor and then refresh your mer-cross repository with command:

Now a word of warning, this will add an experimental repository to your system!

ssu er mer-cross
ssu ur
zypper ar
zypper ref
zypper dup

After this, go to your Qt Creator, select tab SailfishOS.
In that pages tabs, select 'Toolchains' and press install on 'Mer-SB2-armv7hl'.
The toolchain should be installed without intervention from user.

The Sailfish SDK now has arm toolchain installed by default, so you only need to add a target:

The next step is to install a viable target to the SDK. Return to 'Targets' tab and make sure that Mer-SB2-armv7hl is the selected toolchain, then add whatever name you'd like for you target and as the target url add:

Target installation should now proceed to download the target image, unpacking it and then updating Qt Creator with the newly created target.

And that's pretty much it, you can now compile Qt5 applications with Sailfish SDK. The build will also work for Sailfish applications but running them won't work as Jolla is still to release the Silica library for armv7hl.

Stay tuned for the knowledge of getting Qt5 apps to run on your N9/50 Nemo Wayland, from within Qt Creator, in the near future!

by Aleksi Suomalainen ( at 2013-11-24T11:39:25+00:00


Aleksi Suomalainen

Installing SDK version of Sailfish UI on N9

CAUTION: Might break your stuff, back up your nemo installation 
beforehand if you want to be cautious. You have been warned!


Zypper does not always cache the packages, remove lipstick-jolla-home-qt5 with --clean-deps and try again.

Please note, an official guide is coming up from Jolla, which demonstrates this entire process into making an image. This guide will be updated with instructions regarding that.

First things first, you need a working copy of Nemo Mobile running on N9, you can grab one from this link, magnet link. I will not cover the installation of Nemo Mobile for your N9, you can follow this guide to do that.

You also need a working copy of Sailfish SDK running. I will also not cover the installation process here but its quite straightforward to setup. After having a Mer SDK virtual machine instance running, do this to gain ssh access to the virtual machine:

ssh -i ~/SailfishOS/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost -p 2222

In this ssh shell, run:

sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper mr -k -all


sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper in lipstick-jolla-home-qt5

This generates rpm packages to /parentroot/srv/mer/targets/SailfishOS-armv7hl/var/cache/zypp/packages/jolla/ subdirectories, copy them all over to a separate directory on the host machine as one flat directory, like this:

mkdir ~/sailfishrpms
cd /parentroot/srv/mer/targets/SailfishOS-armv7hl/var/cache/zypp/packages/jolla/
cp ./*/*/*.rpm ~/sailfishrpms/

Copy these over to Nemo Mobile running in N9, using eg. scp. Usually one wants to copy over entire directory like the above sailfishrpms.

Then in the device, over ssh, execute:

cd sailfishrpms
zypper install --force *

This will install all of the generated rpms to the device, although with warnings, afterwards reboot to gain access of the Sailfish, SDK version, homescreen.

 CAUTION: Might break your stuff, back up your nemo installation beforehand if you want to be cautious. You have been warned!

by Aleksi Suomalainen ( at 2013-11-04T17:13:39+00:00





Notifications on Glacier UI

Notifications for GlacierPositioning for emphasis.

To clarify the earlier post on notifications on Glacier, here’s a nice, short illustrated version. And a sneak peek at the Gallery app.

For notifications that need user attention (but don’t take the user completely away from the current context), the entire viewport lifts up, uncovering the notification. The user can then dismiss or act on that notification.

For other notifications that aren’t as urgent, the viewport simply shrinks, the notification appears, and disappears after some time.

Quite sleepy as I write this, so maybe I’ll finish it up more tomorrow, when I have time.

by Hurrian at 2013-10-19T13:17:35+00:00



A cursor interaction investigation for Nemo Mobile

A few days ago, Qwazix and I were investigating on implementing a way to move text cursor in Nemo Mobile, something that today’s mobile operating systems have already in their store with more or less success and usability. So the question came: how to be original while keeping ease of use and clever user interaction?

  • The needs

Let’s see what the user need in term of cursor interaction. Basically, you’ve got a text that needs reformating and want to navigate inside it easily. It need to be quick, intuitive, and without false positive (i.e: you want the cursor to be at the end of the line while the cursor stubornly stays two letters before, no matter the number of attempts). This last one is very important since today’s offerings tends to get on user’s nerves, even on platforms such as iOS and Android that have large funds and top developers to overcome such issues.

  • The competition

So what’s in the shelves of the competition? Well, the most common cursor interaction is without a doubt the ‘long tap show lense’ method. If you’re familiar with Maemo/Meego handsets, you must already know this feature, since it seems to have gathered a consensus between major mobile firms. Indeed you can also find it in iOS, along with other major OS’s on the market.


While interesting and practical, bad implementation makes it difficult to use at times, and false positive are from experience far from being inexistant. You may have to be patient and try several times before placing the cursor in the right place. The good is that it is quite touch friendly and intuitive, and good looking too (particularly BlackBerry implementation, see below).


/ a bit to the left, and the cursor move smoothly with your finger to this direction, with a nice colored feedback /

In the other hand, we have keyboard cursor handling, as seen in Android (at least with third party keyboards) and WebOS Community Edition.


The later is, in my opinion, the most interesting approach. What we have is a stick-like cursor which behave like the little red stick from IBM laptop keyboards.


  • Finding the most suitable cursor interaction

Back to the question: what’s best for Nemo Mobile? Well, since the OS will primarily be used on handled phones, we need something that require the less movements possible from the hand/finger, meaning we don’t want the user to need to touch and slide along the whole screen just to reach ‘this particular piece of text’. Secondly, we want the user to find his way easily, in that he would not need hours and a good manual to find how to move his cursor along his texts. And last but not least, we need the less false positive as possible (none at all would be best, in fact).

We can already dismiss the magnifying glass-like implementation from iOS and Harmattan since it conflicts with our first issue. Also, we would not want something *too* original since it would need the user to learn a new trick in the already overcrowded world of user interaction. It may also conflict with our third and last issue since it would require testings and testings to remove as much false positive as possible (and since it would be completely new, we would be in unknown territory without previous trials).

So we figured out that the WebOS community and IBM (sadly, yes^^) were not complete fools when they proposed this stick idea, and that we may have something interesting here to implement as a cursor position switch: it’s intuitive in that it has precedent in OS interaction and doesn’t require much intellect to use, and by design it remove much of the false positive possibilities (the WebOS community has also proved that it works flawlessly when implemented well).

Now, behold gentleman. Our mighty proposition as a cursor interaction for Nemo Mobile:


In between the WebOS community proposition and the IBM red stick, it would answer the forementioned issues while being consistent with the Glacier UI design.

But since we know that the Nemo Mobile community will be the first to undergo this new feature if released, we want to know your opinion. So, do you think this is the right move, or would you prefer us to think harder and find something more original and less from the ‘physical world’?

by sandy_locke at 2013-10-15T13:17:00+00:00




This is the first of a series of controls which will use the Roller interface. More about the roller and how it works here


There are certainly more details missing, so please give it some thought and ask, as I can’t right now figure out what is really needed for a complete spec.

by qwazix at 2013-10-03T19:40:00+00:00







virtual keyboard – Glacier UI

Hello together,

this is Morpog again :) This time with some real work for Glacier UI.

I specced the virtual keyboard from Glacier UI mockup from hurrian and key sizes and spacing from old nemomobile vkb and some own thoughts. All needed files are already created by me in SVG (and PNG of course). Actual files for maliit on github are in a subfolder called maliit.

(click image for larger size)

(click image for larger size)

(click image for larger size)

Also available as PDF files:

by Morpog at 2013-09-08T14:03:23+00:00


Lucien Xu

The long journey from Nokia to Jolla

In echo to Faenil‘s article on his blog, I guess it is time to write my journey as well 🙂

It has been a long journey for me in the open-source mobile front. And it all started around 2 years ago, when I received my beloved N950.

Actually it started quite some time before.

Be Qt !

Qt and KDE (Source)

Qt and KDE (Source)

I entered in the Qt world 5 years ago. As an user of KDE3, I wanted to develop for KDE, so I learnt C++ and Qt. I had fun hacking small stuff, like some UI with Qt widgets, or some Plasmoids for KDE using either C++ Qt, or PyQt. It was fun, I was young, and was just learning. It was the time when I used to double-delete pointers, or use the same name for local variables and class members.

Then, with Qt 4.7, something new appeared: QML and QtQuick. The new declarative language was designed to make UI more dynamic and easier to create. I was skeptical at the beginning, but decided to embrace it, to learn the future-proof solution. While the scripting part annoyed me (I always loved pure C++ for more performances), I found it particularly nice to use, and fun to play with.

In the mean time, I followed Moblin, a nice OS for Netbook that was developed by Intel, before seeing that Nokia, the developer of Qt, and Intel, the developer of Moblin, decided to merge it to create MeeGo, an OS for smartphones, netbooks, that will use Qt.

/Me Go to mobile

The development of MeeGo was, at best, hard, and at worst, chaotic. However, the community was nice, and there were a lot of interest from all over the world. I liked the fact that an OS would be developed to the open, but did not contributed much to it. I was still a beginner, and even failed to install most of the development tools.

For about 2 years, I was still a young padawan, learning Qt, C++, and stuff around Linux and mobility in general. In the meantime, MeeGo was clearly dying. Nokia first abandoned the project, as it was not in the best economical shape, and I felt that Intel was also struggling to do the project alone.

But suddenly, one morning of in summer 2011, everything got kick started. The Nokia N9 was announced, being the first and last MeeGo(ish) phone from Nokia, the N950, developer edition got announced, and I received one, thanks to Nokia, via the MeeGo forums.

My beloved N950 dev-kit

My beloved N950 dev-kit

The N950 was my first experience for mobile development, and it was a pretty good one. I had a lot of fun hacking apps, and the internals, discovering how to change the lockscreen and tried to hack some apps. Sadly I did not released any of them, because of lack of time, and lack of polishing.

The small ship to escape the burning platform

Of cause, I missed one very important event that is February 11th, where Nokia announced that they would go Windows Phone. For me it was quite a shock, as I was betting everything on the Nokia Qt (+ MeeGo) strategy. Having Nokia not doing any Qt product again made me wonder if I was even doing something meaningful.

And once again, a new spark triggered a whole new set of events. In this bright Suiss summer one year ago, Jolla announced on Twitter that MeeGo was actually not dead, and that a group of guys wanted to continue working on a Linux and Qt based smartphone.

Actually, I was waiting for it. The creation of the Mer project, and Nemo mobile, that were continuation of MeeGo core, and MeeGo community handset UX were some hints that MeeGo was continuing, at least on the community side.

In the meantime, I learnt more about UI / UX by studying most of the available platforms, created this blog and JollaFr with nsuffys. I also joined Mer and Nemo IRC channels and met some awesome people, starting with Faenil, but also Iekku, known for the weekly bug triage she is doing for Mer and Nemo. There was also a friendly hacker, known as Stskeeps, that used to help me discover Mer and Nemo.

For those who don’t know, Stskeeps or Carsten Munk, is the Mer project architect, and was also the initiator of the libhybris project, that enables the use of Android drivers in glibc based environnements. I also met some other people, like w00t, that I have heard about in the MeeGo project, or sledges(Sim), qwazix, Venemo etc. Quite a few nice hackers.

So far, yet so close

More events, came, and everything got faster and faster, leading to the end of the year, where finally Jolla will release their product.

In November I attended Slush, and met Faenil, Qwazix, and fk_lx IRL. fk_lx is an enthusiast from Poland that got involved in the open basis (Mer / Nemo) of Jolla’s Sailfish OS more recently, and his contributions, especially in the Dolphinaric initiative, have to be underlined.

Slush was the most exciting event I went. The reveal of Sailfish OS was truly amazing, and I just felt in love with the UI, and the unlike movement.

Be sure to watch and rewatch the announcement video as you can feel the emotion of the team, that are so proud of revealing such a nice product.

My article about this event: Sailfish, a breath of fresh air in UI

In February I went to the Mobile World Congress, following Jolla’s track to their small boxes (they didn’t had any booth 😦 ). I was not alone, this time Nsuffys came with me, and we met for the first time even if we collaborated on JollaFr for 8 month.

We were welcomed warmly during the Jolla blogger meeting, and I received my first Jolla tee-shirt here.

(I’m on the right, Nicolas on the left, and Iekku just between us 🙂 )

In May I got invited by Jolla for the reveal of the Jolla phone, aka the Jolla love day, where I met quite a few more people, like Jason, that manages JollaUK, and the ones behind JollaSuomi and JollaTides. Faenil and fk_lx were here too, and it was good to see them again.

For this time, I just remember the nice and long discussions we had with Jukka Eklund, Iekku, and also Joona Petrell, and Alberto. Once again, emotions and joy since the Jolla phone is really a nice and beautiful product. I also got an “I’m the other half” tee-shirt 🙂

The Jolla love room, where Marc Dillon was demoting the phone

The Jolla love room, where Marc Dillon was demoting the phone

My articles about this event:

Sadly, I missed the Devaamo, and will probably miss SmartDevCon as well ( 😦 ), but in the end of June, I went to an internship at Jolla. It gave me stuff to do during the whole summer holidays, and I could finally understand the feeling of being inside.

I always wanted to blog my experience in the company, but didn’t find any energy to do it. Maybe I will do it one day. In short, I would quote Stefano Mosconi, when he welcomed me: “I just want to show you that, basically, inside the company we are not different, we are just like what we look like outside of the company, opened” (well, I don’t remember the exact sentence, but that’s the idea)

It was really exciting and nice to work in Jolla, and I would really love to go back to Tampere again as soon as possible.

At the beginning of the internship the release day seemed to be so far away, but time flies, and the end took everybody by surprise. Suddenly, there were only 3 or 4 month left. So close …

Just after my leave, Stefano thanked me on Twitter 😳

History repeating itself

Today, (most important parts of) Nokia got sold to Microsoft.

While I broke my links between Nokia long ago (just after the N9, knowing that they won’t support it for long), I still had sympathy for this company, that edited Qt, and made some amazing phones like the N95, E71 (E63) and N900, N9 (N950). I found their Windows Phones not that bad, and even liked the 1020, maybe not enough to consider buying it but still.

Now that Nokia is no more a phone manufacturing company, something more died in me. For me it is the death of the good old Finnish phones. Of cause, Jolla is still around and I hope that they will succeed, but I will remember today as the day that I cut all the links to Nokia.

I shouldn’t bother so much about the past, but I’m a kind of nostalgic guy. Yet, after a whole day of thinking, I found that this news is a good one. It is just about history repeating itself. Several companies were former giants, and had to go through a reconstruction process to reborn as a different entity, and it is what exactly Nokia is doing.

Nokia won’t make phones, but they used to make boots and paper before. And I know that Finns are skillful, slightly introverted but skillful and that they can create great things. Maybe, after some years, Nokia will reborn as a different company, that might offer localization services, or medical devices. Maybe they will become a different giant, and a company that I will appreciate again.

Well, only time will tell, for both the future of Jolla and Nokia. And it is time to stop looking nostalgically at the past. The future is ahead and exciting times are yet to come !

by sfietkonstantin at 2013-09-03T19:56:09+00:00



here’s how headerDock would look in breeze theme

This is not as polished as the previous images, as not all the controls are yet thought-out for breeze, but I wanted to get the feeling out.


by qwazix at 2013-09-01T21:52:22+00:00



three random images with the header

The fade to white header doesn’t look good, but specs aren’t made to look good. Here’s an example of the header on different backgrounds, plus one with a different gradient and icons


by qwazix at 2013-08-31T09:29:48+00:00


Nicolas Suffys


Nicolas Suffys


Nicolas Suffys


Nicolas Suffys


Nicolas Suffys


Javier Romero

systemd and services managing in Nemo

We'll see what systemd is and how it can be use to start and stop Nemo's services.

systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.
More information:

First let's see the status of all things controlled by systemd
Running systemctl command will display this result:


To see only running services we can run a systemctl -t service command. But if we want to see all services available, we run systemctl -t service --all and will display all services, running or not:

If we want to check for example, the status of the ssh service, we must run systemctl status sshd.service In this example, will show us that this service is active and running:

Let's stop the ssh service, to do this type systemctl stop sshd.service and after running the status command, we can see that the service has been stopped:

and access via ssh is not available:


systemctl restart sshd.service can be used to restart service, in this case w'll start ssh service again running systemctl start sshd.service and check if it is available again with the status command:

access via ssh is available now:

In systemd cgroups are used for processes management. New processes become members of  a cgroup when they are spawned. The name of a cgroup, depends on the service name to which it belongs.

 As an example, here is an mcompositor service file shown on figure:

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-17T17:05:52+00:00


Javier Romero

Nemo OS components functions

These are the four Nemo OS Layers:

Hardware Adaptations Layer
Nemo Middleware
Nemo UX


  • Hardware Adaptations Layer: 

x86 denotes a family of instruction set architectures, based on the Intel 8086 CPU. The term x86 derived from the fact that successors to the 8086 also had names ending with "86", with successive digits inserted between the "80" and "86" (e.g. 80286, 80386). Many additions and extensions have been added to the x86 instruction set over the years.
More information:

The ARM architecture describes a family of RISC-based computer processors. Using a RISC based approach to computer design, ARM processors require significantly fewer transistors than processors that would typically be found in a traditional computer. The benefits of this approach are reduced costs, heat and power usage compared to more complex chip designs, traits which are desirable for light, portable, battery-powered devices such as smart phones and tablet computers. The ARM architectures used in mobile devices range from ARMv5, used in low-end devices, to ARMv6, to ARMv7 in current high-end devices.
More information:

  • MER Core OS Layer:

GStreamer allows a programmer to create a variety of media-handling components, including simple audio playback, audio and video playback, recording, streaming and editing. The pipeline design serves as a base to create many types of multimedia applications such as video editors, streaming media broadcasters and media players.  
More information:

Connman is an alternative to NetworkManager and was created by Intel and the Moblin project for use with embedded devices. ConnMan is designed to be light on resources making it ideal for netbooks, and other mobile devices.
More information:

oFono aims to provide an easy to use interface that can be used to create rich telephony applications without requiring one to have a deep understanding of the underlying technology and its limitations. To accomplish this, oFono provides language-independent D-Bus API that is extremely easy to use.
More information:

Qt Mobility:
The Qt Mobility a suite of Qt APIs for supporting mobile device functionality. These APIs will enable cross-platform mobile application development.
More information:

Qt 4.8:
Is a cross-paltform application framework that is widely used for developing application software with a graphical user interface (GUI), and also used for developing non-GUI programs such as command-line tools and consoles.
More information:

The X Window System (commonly known as X11, based on its current major version being 11, or shortened to simply X, and sometimes informally X-Windows) is a computer software system and network protocol that provides a basis for graphical user interfaces (GUIs) and rich input device capability for networked computers.
More information:

PulseAudio is a sound system, that allows you to do advanced operations on your sound data as it passes between your application and your hardware.
More information:

  • Nemo Middleware Layer:

Tracker is a powerful desktop-neutral first class object database, tag/metadata database, search tool and indexer. It has the ability to index, store, harvest metadata. retrieve and search all types of files.
More information: 

Is a framework focused on making media discovery and browsing easy for application developers.
More information:

 Maliit provides a flexible and cross-platform input method framework for mobile and embedded text input, including a virtual keyboard. It has a plugin-based client-server architecture where applications act as clients and communicate with the Maliit server via input context plugins. 
More information:

Is a QML toolkit “of sorts” for making compelling user interfaces for devices easily. It is written in Qt and uses QML for the User Interface.
More information:

It's a Compositing Window Manager. A compositing window manager is a software that draws a graphical user interface on a display.
More information:

QML plugins: 
A plugin implements certain extension points but at the same time can also define new extension points. 
More information:

Context kit: 
ContextKit is a framework for collecting contextual information from the bowels of the system, cleaning them up and offering them through a simple API.
More information: 

  •  Nemo UX Layer:
The UX was originally based on MeeGo Handset UX, but is now using lipstick.
The Nemo Mobile project continues the work started in the MeeGo Community Edition to create open community driven OS and apps.Currently initial Nemo port exists for Nokia N900 and N950/N9 devices. There is also some support for Google Nexus 7, Pandaboard, and x86 based tablets/netbooks like ExoPC.
More information: 

Input Method: 
Maliit. The open mobile text input project.
More information: 

Nemo User Interface settings and configurations.
More information: 

User Applications from Nemo Mobile.
More information: 

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-04T10:36:09+00:00


Javier Romero

Setting an Static IP Address in Nemo Mobile

CONNMAN: Connection Manager

The ConnMan project provides a daemon for managing internet connections within embedded devices running the Linux operating system. The Connection Manager is designed to be slim and to use as few resources as possible, so it can be easily integrated. It is a fully modular system that can be extended, through plug-ins, to support all kinds of wired or wireless technologies. Also, configuration methods, like DHCP and domain name resolving, are implemented using plug-ins. The plug-in approach allows for easy adaption and modification for various use cases.
The command line interface is located in the "connman-tests" package already installed.
So to configure a STATIC IP we must change to connman directory:

cd /usr/lib/connman/test/

and then run:


The output should look like the following:

[ /net/connman/service/ethernet_mac_address_number_cable ]
IPv6.Configuration = { Method=auto Privacy=disabled }
AutoConnect = false
Proxy.Configuration = { }
Name = Wired
Nameservers = [ ip_dns_1 ip_dns_2 ]
Provider = { }
Favorite = true
Domains.Configuration = [ ]
State = online
Proxy = { Method=direct }
Nameservers.Configuration = [ ]
LoginRequired = 0
IPv6 = { }
Domains = [ lan ]
Ethernet = { Interface=eth0 MTU=1500 Method=auto
Address=xx:xx:xx:xx:xx:xx }
Security = [ ]
IPv4.Configuration = { Method=dhcp }
Type = ethernet
Immutable = false
IPv4 = { Netmask= Gateway=
Method=dhcp Address= }

The service ID (ethernet_mac_address_number_cable), DNS nameserver and Gateway IP addresses are in the output.

We will change the configuration first of the IP address to by running:
./set-ipv4-method ethernet_mac_address_number_cable manual

For DNS nameservers we run this command:
./set-nameservers ethernet_mac_address_number_cable ip_dns_1 ip_dns_2

There is no need of reboot, after this configuration is made, you will always be given the same IP Address to your Nemo System.

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-03T15:00:08+00:00

X Server error in Nemo

I was learning about Pyside in Nemo Mobile, and was trying to make a "Hello World" window appear in the screen.
I was connected via SSH to the Nemo VM from my Linux Desktop, and after creating the Python and QML files, run the program but no window appears, instead I receive a connection error with the X server.
So try to resolve this issue, by editing the /etc/ssh/ssh_config file and setting "ForwardX11 = yes", but the error was still appearing.
The solution was to close the SSH connection, and then connect again but with the -Y option.
For example:

ssh -Y user@

If you still getting the error try with the -X option instead of -Y

 -X => Enables the X11 forwarding

-Y => Enables trusted X11 forwarding

Hope you enjoy Mer and Nemo as I do!


by Javier Romero ( at 2013-07-03T14:59:55+00:00

Installing Nemo VM on Virtualbox

I will explain how to install Nemo i486 / i586 VM in a Virtualbox machine.
First of all we have to download the iso image from:

For i486 iso image:

For i586 iso image:

Then start Virtualbox and create a "New" VM:

Name: Nemo Mobile
Type: Linux
Version: Linux 2.6

and give it 512 MB of RAM:

Create a virtual Hard Drive:

a VDI type one: 

Dynamically allocated:

with 4 GB of Disk space:

Then enable PAE / NX in "System > Processor":

In Network Adapter set "Attached to: Bridge Adapter" so as to be able to have Internet connection with Nemo VM.

Load the "NEMO-i486-VM.ISO" in the virtual machine:

Now we click on "START" to boot the System:

once Nemo has booted:

open a virtual terminal in text mode by pressing <Host>-F2 (<Host> key is typically mapped to RightCtrl). 
Login as user: root with Password: nemo and change to the root "/" directory typing cd /
Then run the installer-shell command and select option 1 for Hard Disk installation and then option 2 for use of the Full Disk install:

Then press ENTER key when ask if are you sure you want to continue::

and installation will be completed. Then we'll change root password running passwd command. Enter the new Password and then retype it. 
After that you can power off Nemo VM with halt -p:

Remove Nemo ISO from Storage CD: Settings > Storage > IDE Controller

Click on "START" to boot Nemo but now, from the Hard Disk.
Take a look here:  Update Nemo after installation
You will learn how to update your System with the last packages.

Note: if you prefer, you can configure an Static IP in the VM instead of obtaining it by DHCP. Here you can find the way of configure it: Setting an Static IP Address in Nemo Mobile

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-03T14:59:44+00:00

Moving through Applications in Nemo

I will explain how to close, maximize and minimize apps in Nemo Mobile.
Once in the Home screen, open any application by clicking on it's Icon

To Minimize an app, hold the left or right "Mouse click" while swiping it from the Bottom of the screen to the top, or you: can also do it  swiping the mouse from any of  the four edges of the screen.
To reach the next screen showing the four apps that I have opened, from the Home screen, hold the "left mouse click" while swiping it to the left.

But if you want to Close an app, you have to situate the mouse over any of the opened app, and hold the "left mouse click" for an instant till a cross appear in the upper right corner, as you can see in the picture. 
Note that you can close only one app by clicking on it's cross, or you can click on "Close all" to exit all apps. If you decide to close only one app, after clicking on it's cross you have to click on "Done" and all the other crossings will disappear.

To Maximize any of this apps, simply click on it:

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-03T14:59:30+00:00

Nemo Mobile Structure

 Here is a diagram of the Nemo OS with it's components:

  Nemo OS
Hope you enjoy Mer and Nemo as I do!


by Javier Romero ( at 2013-07-03T14:59:15+00:00

Access via SSH to Nemo VM

I will explain, how to access via SSH to Nemo VM.

But, what is SSH?
Secure Shell (SSH) is a cryptographic network protocol for secure data communication, remote command-line login, remote command execution, and other secure network services between two networked computers that connects, via a secure channel over an insecure network.
Listening on Port 22 by default, but you can change this and other parameters by editing it's configuration file  in /etc/ssh/ssh_config.

Once your Nemo Mobile is up and running, open FingerTerm application and run an ifconfig command, you will see the IP address that has been asigned to your VM. In this example IP  is Then type exit on the FingerTerm console to close this application.

Then we login via SSH running ssh user_name@vm_ip_address from a Linux terminal, and will ask you to accept the RSA KEY, say yes. In this case, user_name is root:

Note: For Windows OS you'll need an SSH client like Putty. You can download it from here:

You are now login into Nemo via SSH. To know more options about it, type ssh --help on the console.
You can set an Static IP for your Nemo VM, what is very useful. See Setting an Static IP Address in Nemo Mobile to do so.

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-03T14:58:46+00:00

Update Nemo after installation

In Nemo, as in other Linux Distros, we can download packages from repositories and install them on our System.
For this kind of operations we use Zypper, a command line Package Manager which provides functions like repository access, dependency solving, package installation, and can also handle repository extensions like patches, patterns and products.
Here is a list of the most useful zypper commands:

repos, lr  =>  Lists all defined repositories.

addrepo, ar  => Add a new repository.

removerepo, rr  => Removes the specified repository.

refresh, ref  => Upgrade all repositories.

clean  => Clean local caches.

install, in  => Install packages.

remove, rm  => Remove packages.

verify, ve  => Verify the integrity of the package dependencies.

update, up  => Update packages with new versions.

dist-upgrade, dup  => Performs a distribution upgrade.

list-updates, lu  => List available updates.

search, se  => Find packages matching a pattern.

info, if  => Displays complete information of specified packages.

packages, pa  => Lists all available packages.

Note: with command zypper --help you can see a full list of zypper options.

So, if you have just installed and got your Nemo Mobile up and running, next step is to update it. To do this, first open a command line terminal, and login as root:


and then run a zypper ref (abbreviation of zypper refresh) to upgrade all repositories:

Once this is done, run zypper up to update packages (in this case no package needs to be updated):


and finally run zypper dup to upgrade. Will tell you the size in MB of the overall download and will ask you if you want to continue:

answer yes to start the upgrade:


and after retrieving packages from repository, will automatically start installing them on the System:

Hope you enjoy Mer and Nemo as I do!


by Javier Romero ( at 2013-07-03T14:58:28+00:00

Say Hello to the World with Pyside and QML

I will explain how to create a "Hello World" application, to do it, we'll use PySide and QML.

Pyside is open source and provides Python bindings for the Qt framework..

A binding fits a library that will be used in a programming language, to other than that in which it was written.

Qt is a cross-platform application and UI framework, that let us write applications once for many operating systems. If we use Qt and Python, PySide provides the Qt framework for develop software in Python.

Qt Quick is a software application framework, and provides a declarative way of building custom, highly dynamic user interfaces with fluid transitions and effects. Qt Quick includes a declarative scripting language called QML.

QML (Qt Meta Language or Qt Modeling Language) is a JavaScript-based, declarative language for designing user interface–centric applications. QML elements shipped with Qt are a sophisticated set of building blocks, graphical like rectangles and images, and behavioral like state, transition and animation. These elements can be combined to build components ranging in complexity from simple buttons and sliders, to complete internet-enabled programs. QML is the language that describes the user interface of a program, what it looks like and how it behaves, the runtime is called Qt Declarative. In QML, a user interface is specified as a tree of objects with properties

A PySide-QML application consists, at least, of two different files, a file with the QML description of the user interface, and a python file which loads the qml file.

Python is a modern dynamic and widely used for general-purpose high-level programming language.

Now we have to install python-pyside package in our Nemo VM. To do this, we run from the FingerTerm terminal:

ypper ref

and then:

zypper in python-pyside



Let's create a new directory call /Test and save both the ,py and .qml files here. In this example I will create test directory on "/":

Create Directory:
mkdir /test 

and then change to it:
cd /test 

Qml file creation: 
vim helloworld.qml

    import QtQuick 1.0
    Rectangle {
        width: 500
        height: 500
        color: "blue"
        Text {
            text: "Hello World"
            anchors.centerIn: parent

In the first line we import QtQuick 1.0
Then we create a blue rectangle with a 500 x 500 size with a Text element which says Hello World. 
Finally we give the code anchors.centerIn: parent wich it makes the text appear in the center of the screen.

PySide file creation:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtDeclarative import QDeclarativeView
# Create Qt application and the QDeclarative view
app = QApplication(sys.argv)
view = QDeclarativeView()

# Create an URL to the QML file . Directory where the qml file is located
url = QUrl('/test/helloworld.qml')

# Set the QML file and show

# Enter Qt main loop

Run python /test/ from the terminal and the Hello World window will appear:

Note: if you are login to the Nemo VM through SSH, please read Here

Links with reading material for Python and Qt:

A byte of Python:
Think Python:
Qt Documentation:
Qt getting started Guides:

Hope you enjoy Mer and Nemo as I do!

by Javier Romero ( at 2013-07-03T14:58:10+00:00



Unveiling Glacier


[Version 1.0 uploaded! I'd call it "Stable", with most, if not all interactions and elements defined.]

Hello world! Hurrian here.

Following news of the Nemo UI rewrite, I decided to chime in with my thoughts of how a mobile UI should be like.

And following the naming scheme on here, I’m calling it Glacier – a smooth, liquid UI, on ice.

It’s a primarily high-contrast UI with light, airy text on dark backgrounds, borrowing heavily from contemporary design paradigms – Android 4.x, Firefox OS, iOS 7, OS X, Windows 8, Sailfish, and MeeGo-Harmattan.


  • A simple, large clock, with the date underneath is shown. The background under the text is always darkened and blurred to enhance the readability of the text.
  • Notifications are lined up under the clock – tapping on these will unlock/prompt for the unlock code (if any), and open the app.
  • Swiping the lockscreen away from the top edge lands you on the Search page
  • Swiping the lockscreen away from the bottom edge lands you on the app launcher.
  • Swiping the lockscreen away from the left edge lands you on the Event View
  • Swiping the lockscreen away from the right edge lands you on the Multitasking view

The rationale behind different targets for different swipe zones reinforces the user’s spatial awareness – a main point of the UI is the use of layers to imply navigation information. (Refer to the use of layers in Maemo 5.0/Fremantle and MeeGo-Harmattan)


  • Search uses Tracker’s indexed database, making searches fast
  • Search can prioritize results by user choice
  • A short description of the action an app will perform must be under the app’s search result
  • The Search page can be reached by swiping from the top edge in the app launcher or lockscreen.


  • As a list-based application, the list is arranged as the first, and foremost object on-screen.
  • Large text marks list items, with a small subtitle when necessary to explain its function
  • The use of titles and subtitles in conjunction with icons reinforces the mental correlation between these two

Event View:

  • Items on the Event View are populated by widgets
  • The user can rearrange the widgets in any way s/he so wishes
  • Similar to the lock screen, tapping on the widget redirects the user to the app.


  • All icons will have a circular background to enforce consistency, however, app developers may choose to create their own custom icons with a not-perfectly-round profile.
  • The use of color and not-perfectly-round icons makes apps easily recognizable
  • Apps are not hidden into folders, rather, they’re grouped into categories, which may be labeled by the user
  • Gaps in the app grid are permitted, for those users who insist on certain layouts ;)


  • Borrowing from Sailfish, a minimized app view is available.
  • Notifications can be put on the minimized app view, allowing quick access to them (and replacing the traditional notifications menu)
  • Borrowing from OS X’s Mission Control, the app icon and name are displayed on the bottom of the minimized app to let users quickly recognize the app

Sample apps – Camera:

  • The app’s focus is put front-and-center
  • UI chrome is left as minimal as possible
  • Controls are not hidden in gesture menus (more like Harmattan, and unlike Sailish’s pulley menus, which in certain contexts could be confusing, the removal of which causes a consistency issue)

Sample apps – Browser (and notifications!)

  • The notification pushes the active app up (and floats?) for a few seconds (see Harmattan in the lockscreen when someone calls/alarm fires)
  • The active app partically covers the notification, further indicating to the user that a swipe action can be performed
  • After a few seconds, the app comes back down, and an edge glow and app icon are shown to indicate an unread notification.

Sample apps – Messaging

  • Contact name is on top, with a small contact icon and availability (if services are connected) indicated by a green glow.
  • Ordinary chat bubbles. Move along…
  • Message type (SMS/IM/etc.) indicator – allows for unified messaging with a contact (Fremantle!)
  • Spacious virtual keyboard

Sample apps – Music Player

  • Just like in Harmattan, the album cover is put front-and-center
  • To save screen space, the app header and back button are overlaid on the album
  • The music progress is overlaid on the bottom third of the album cover. Drag it to quickly skip around the song.
  • Album/playlist song list is below the song/album/artist title, instead of hiding it behind the album cover, like Harmattan
  • Pause/previous/next buttons are at the bottom

Feel free to leave a comment or shoot me a mail (kenneth <{[gnat]}> meta <{[dot]}> mm <{[dot]}> am).

I’ll be continuously updating this post as I get comments and remarks.

by Hurrian at 2013-07-02T21:16:00+00:00



More icons and how to make your own

I think I completed all the icons for the current built in applications of nemo. Here they are.


There are three types of icons in this iconset. The first, and preferred one, if you can manage to do it, is to find an object representative of your app that is circular, like the dialer, or the combination locker. It doesn’t have to be absolutely circular, some parts can stick out of the circle and actually this practice is recommended.

The second type of icons are objects that are not circular but can be easily recognized even if modified to a circular shape, like the sticky notes, or the packages. This can be done by either cropping or reshaping the object.

The third solution, least recommended but always easy to do, is to just paste any icon over a colored circle. This is actually recommended for logos of established brands/apps who do not allow their logos to be modified. The circle has a radial gradient from the center to the rim, with the lighter part at the center and maximum difference in lightness between rim and center at about 50.

Here is the calendar icon in svg to base your own icons on it. You will need the open sans font

by qwazix at 2013-07-01T21:01:30+00:00



Proposed iconset for breeze

This is my proposed iconset for breeze.

breeze iconset

The icons are all based on a circle for reasons outlined in the previous post. The circle has a very low contrast radial gradient with the center of the circle being slightly lighter than the rim.

Colors are still pale and playful and should match the tint colors of the apps (I know this isn’t the case yet with the mockup I did a few posts back, but this is going to be fixed)

by qwazix at 2013-06-30T18:40:06+00:00


Icons are a very important aspect of a mobile OS. You see them all the time. And Nokia has treated us with what I believe is one of the most fine icon sets of all time with the N9.

While I admit that I like borderless/backgroundless icons (N900, Android) most app developers have no icon-making skills and make really ugly icons, especially in the FOSS world where no big corporations with design department do apps.
So when your app grid gets filled with 3rd party apps, having a background makes the grid as a whole look much more consistent and tidy.

That’s why apple auto-composites icons to it’s own background. So that dev’s don’t even have to bother with making an icon look like the others. They just choose an image and it does the compositing (there’s of course the option to disable that and create your own composited icon).

My idea is to create a dominating shape for all icons which is not a hard background like N9 but just a guideline for all OS apps. The icon is allowed to deviate a bit from that shape with things sticking out or negative space eating in.

For example look at the settings icon of FirefoxOS

FirefoxOS iconography

This gives freedom to designers to create something special but also allows developers to use a generator that slaps any icon of any shape on a circle (or crop it to a circle) and create an icon that doesn’t look out-of-place.

Hurrian’s icons use this approach, and I am readying an icon set myself that adheres to the same guidelines.

by qwazix at 2013-06-30T18:28:46+00:00



The logo

I really should have announced this officially some time ago, but better late than never.

This is the final nemomobile logo as voted by the community.

by qwazix at 2013-06-28T21:49:43+00:00

A glimpse into the new design language

Here’s a scratchpad of some screens of the new design language I’m thinking about for nemo. Nothing is final here, the accompanying texts have double purpose: as guidelines but also as notes for me to remember what I was thinking while sketching this down.

These screens do not cover every control and every pattern but are a good indication of where I want to go.

The general ideas behind the theme are

  • Flat surfaces
  • Circular buttons with icons
  • Wavy, low contrast gradients
  • Pale colors
  • Clickable texts and list items without bevels
  • Simple icons, without sharp edges as much as possible
  • Use of different font weights, sizes and opacities to signify different in importance of various texts
  • Text inputs signified by bottom border only
  • Slight use of color to signify especially important operations like delete
  • Different color tint per application
  • Use of gestures but not too much of them
  • Saving clicks where possible by smart default actions

but most of all, I wanted to make every screen look like well designed printed material. The fact that the dpi of current devices surpass the dpi of standard commercial priters, allows us to take advantage of high quality type, that is easy to read and looks good, and do away with all the tricks we used to do on screens to hide the extremely low definition. The fact that users are familiar with basic touchscreen interactions allows us to not worry about affordances like buttons that look pressable and other effects that increase visual clutter.

Keeping the sea-themed naming scheme, the name of the new theme is breeze.


by qwazix at 2013-06-28T21:39:51+00:00

Let’s talk type

One of the basic things we’ve got to choose is the font we’ll be using. We need a sans serif font, with many weights and good quality. I personally like the new humanist sans fonts that have appeared (and almost dominated) the digital type in the last few years. Very nice examples are the Nokia Pure font, the Segoe UI font and Ubuntu.

For a free project we obviously need a free font. There is a very nice free/open source font recently developed by adobe, Source Sans.
That would be my choice for the nemo main font but, it doesn’t yet speak Greek, and you know, I would be filing bugs about my own choice :)

I’d like to note here that Greek and Cyrillic are a bit different than all the other scripts out there that can easily use their own font. Because Greek and Cyrillic have common glyphs with Latin, it’s important that they look the same. Especially for Greek as the GSM alphabet is mixed Greek/Latin (there is no true Greek support but only the capital Greek letters that do not have counterparts in the latin alphabet exist). Thus, if we had to fall back to another font, different fonts would be used only for the missing glyphs and Greek SMS message would look like this:


unacceptable and unprofessional

So the choice, at least for the time being, is Steve Matteson’s open sans.
open sans

It’s a font that looks modern, it’s easy to read, has many weights and isn’t extreme in any way. The only thing I have against it, is that it’s being used too much.

Happy reading!

by qwazix at 2013-06-28T21:38:43+00:00

Thank you nemomobile community

I would like to thank the nemomobile community for appointing me in the position of the design lead.

I truly believe that real thanks lie in actions though, so I will give mine with a couple of posts. Stay tuned.

by qwazix at 2013-06-28T21:37:26+00:00


Lucien Xu

Tinkering with Mer, Nemo, Sailfish, the noob guide by a noob

I’m usually an application developer, that loves to focus on UI, user experience, and so on. But sometimes, I want to be involved on more low level stuff. While working with Jolla folks, I had to be interested in the Mer project, in how I can build an image for a device, and deploy Nemo mobile, or (in the future) Sailfish GUI on top.

As a happy N9 user, I did not wanted to break my beloved device, so the hardware on which I can tinker was rather limited, but you might now that I got a (not so) nice tablet for Christmas, the Iconia tab W500, that became the perfect device to hack on.

tl;dr ? Read the FAQ at the end, there are many questions that are often asked, and that are answered.

Running Mer core: discovering the tools

Mer, as a mobile OS that is focused on vendors, provides a very useful set of tools to ease the creation of image. This includes mic, the MeeGo image creator, and osc, the OpenSuse controller, that talks with obs, the Open Build Service. While the first is used to create an image, that can be a live CD, a live USB or a raw filesystem, the second is used to package all the necessary bits to create an OS.

Mer already offers a solid base of packages, including basic libraries (glibc, Qt4 and 5, X11), and CLI programs (wget, htop, vim). Basically, you get a solid GNU-Linux distribution, that is really easy to hack, without all the pain of compiling everything yourself. But it do not offer much more. Don’t expect to get Firefox, or KDE, or LibreOffice to be packaged: Mer is just a core.

In order to start creating your own image, you can install the Mer Platform SDK, that is a nice chroot Mer distro, plus some scripts, that can be installed on all Linux distros. Visit [1] for more information.

When I got the platform SDK installed, I was very tempted to get something running on the tab, but I found mic to be a bit strange to use. [1] gives you a nice tutorial on how to use that tool, but it might be better to get other kickstart files, like in [2] or [3], and start with i*86 architectures. If you have a laptop with Intel CPU and GPU, you might want to run the image on the laptop before, and see how it works, before getting on other arch, like ARM. You can also try VirtualBox.

It is very important to be familiar with Mer, because Nemo, Sailfish, Plasma active, everything runs on Mer, and nothing else. If you want to get a port of, let’s say, Sailfish on your hardware, you need Mer to run on it.

Hardware adaptation

Mer do not offer hardware adaptation. Kernels, drivers, should be provided by the vendor, and in your case, it is you. Mer do not offer any GUI either, but other projects, like Nemo or KDE Plasma Active provides that. Moreover, Nemo already offers hardware adaptation bits, especially for the N900, N950, N9, and Intel based computers, that’s why I recommended to use an Intel CPU / GPU computer to try Mer first.

Once you are ready to make the big jump and get into the hardware adaptation part, you have to identify the things to provide. In my case, I needed a driver for AMD GPU, and also a custom kernel that uses these drivers. I have chosen the open source drivers radeon, since they provide decent support for my GPU.

Everything that I needed was to package the radeon driver, a dependency for X11, xorg-drv-ati, and the kernel. I did not start from scratch, since similar packages can be find in OBS, in [4]. [1] also provides a good tutorial on how to start with OBS, and [5] is a mandatory read to master that tool.

It was my first time as a packager, and I learned to write spectacle files and RPM spec files. Spectacle is a tool provided by MeeGo, and now used in both Mer and Tizen, that helps you in writing spec files, by generating a skeleton. See [6]. The reference packages for X86 Intel [4] can also be a great help, at least for X86 hardware, like the Iconia tab.

Get stuff done

The tutorial should stop here. Depending on what your goal is, you have different path to follow.

  • If you want to get Sailfish Simulator image into your X86 hardware, you might follow [7] and use the hardware adaptation packages you created.
  • If you want to develop your own user experience, you might get in touch with either KDE or nemo, since both provides nice tools to build them. If you don’t know Qt, it is time to learn it as well.

Don’t forget to contribute back to the Mer project as well. You can report bugs [8], or maintain and submit new packages. See [9] for a detailed overview.


Q: I want to get Sailfish running on <put a phone here> !

As you can see, Sailfish is based on Mer, and Mer do not provide hardware adaptation bits. So first, you need to get informed on how the hardware you have can be managed. X86 hardware is basically managed, but for ARM it is harder. The most important part is GPU. Does the GPU manufacturer provides Linux drivers (for Linux distributions). Does it provides driver that is compatible with X11 ? If yes, then it might be possible to get Sailfish running on that hardware. But it is not as easy. See the following video, with nemo.

Q: The SDK is out, give me a port !

The SDK only provides an image for X86 architectures, that are often used in computers, but not so often used in phones. The image is not compatible with ARM CPU, that powers nearly all the phones. You might not be able to get a port for ARM phones, but for some computers and tablets, it is possible. See the following videos.


by sfietkonstantin at 2013-04-11T10:06:38+00:00



A few thoughts about BlackBerry 10

I’ve been using BB10 for some days now. I like the OS, and I can see myself using it as my main phone, but as everything, it has its drawbacks.

I won’t mention bugs or application quality in appworld as this is off topic on this blog. I have several things to comment on about the UI however.

Menus all over the place.

There can exist up to 4 menus in each app without a distinct difference from each other.

Top menu, left menu, right menu and titlebar menu. This is outright confusing.

Weird navigation

Origin is a very important aspect when you have card multitasking and Nokia did that right with both the N9 and N900. The applications spawned new windows just when that was right. On BlackBerry new application windows are almost never spawned, so you could well be in a Compose SMS window at the same time in the phone application, the hub, or the contacts application. Combined with the fact that there are covers that hide the state of the running apps, it’s becoming difficult to detect where you were before, say, switching to the browser to copy something over. In the following screenshot I’m composing messages in the hub, phone, and contacts app.

And this is how it looks like 3 seconds later. Impossible to distinguish when the cards are covered.

Going Back

Going back to an app’s previous page is done with the back button, just like on harmattan. Wrong! When the keyboard is up, there is no back button. You have two choices. Either swipe from out of the screen with two fingers upwards to hide the keyboard (completely undiscoverable and counter intuitive compared to harmattan’s swipe the keyboard down as you swipe up to collapse something down), or swipe back from everywhere, sailfish like. The second gesture is good enough, but has been shot in the foot: firstly it’s not present everywhere and second, you don’t notice it exists because you see the back button at first. Then when the back button disappears behind the keyboard, you just feel lost.

Edit: There’s a third method. Tap somewhere neutral to hide the keyboard and then press back. That’s more obvious, I admit.

Unnatural gestures

Some gestures feel unnatural. Mostly the gesture which brings up the multitasking view when you are on the hub and the hub peek gesture. Believe it or not, this screenshot is done by swiping from the bottom of the screen.

Even if you do that, the natural response seeing the pane appearing from the right is to move your finger left or right, which doesn’t move that pane. Lifting the finger while seeing the above brings up the card view, despite the center of mass of the pane being outside the screen. (In general, when lifting the finger from the screen, if the finger is not moving, the elements fall back to equilibrium, that is, if more than half the pane is visible it completes it’s move and comes to view, otherwise it rolls back and hides.) This animation violates that rule.

Another such example is the Hub Peek gesture. Instead of the natural swipe from the left to reveal what is behind, you have to swipe from the bottom of the device, and you are shown this

Which provides no clue that when you start moving your finger to the right, after some weird friction you will be presented with this


by qwazix at 2013-02-04T19:51:48+00:00



Three levels of the same thing

Recently, a non-tech-friendly relative of mine purchased a high end android phone, and while trying to help them with the basics I realised something. But as always, I’ll leave that for later.

Almost two decades ago, Microsoft released Windows 95. Windows 95′s main screen was not the Program Manager anymore, but the Desktop. I’m certain that there was something else resembling the Desktop before Windows 95, but it was Microsoft that brought the Desktop to our homes. The Desktop had a nice wallpaper image, could hold the files we were currently working on, and shortcuts to our most used programs. Windows 98 added web clips to the mix, to show at-a-glance information. This evolved into widgets.

Fast-forward to 2005 and Nokia’s 770 and other early touch screen pocket computers. The desktop was there, allowing for easy access to program, websites and at-a-glance info like the weather. A nice move from the desktop Desktop to the mobile Desktop. Then Windows Mobile 5 came, with a screen dedicated to unlocking the keys of your phone, requiring the user to tap two buttons in quick succession. Then came Android which took the desktop and the lock screen and put them together. All that time, the application launcher, existed, either as a grid or a menu.

The lockscreen is a mostly a useless thing with a bling, and can be certainly be replaced very effectively by a slightly harder-to-activate button like Nokia’s slider. To make that lockscreen less useless, HTC added the possibility to launch some apps directly from the lockscreen. Other android manufacturers followed suit.

So, our poor non-tech user presses the powerbutton of his new phone, waits a bit, sees some flashy animations and is subsequently presented by this. Which if you forget everything you know about phones is a screen with the time, a nice photo, and some icons

Then our poor fellow, after some help from somebody who has had a smartphone before, manages to unlock the phone and sees this

which to the uneducated eye is, ehm, a screen with the time, the weather, a nice wallpaper and some icons

And then his techie friend decides that the most important thing about a smartphone is, well, apps so he helps him to press the app menu button and voila…

what a surprise! A screen with the time, a nice wallpaper, and some icons. Okay, the time is small and cramped in the upper right corner but you get what I mean. Our poor user can’t possibly even begin to understand why there are three levels of app grids and what they do. This user will most probably never know what a widget is and never use one not pre-existing on his desktop. Moreover, when apps start to fight for airtime and auto-pop up on the desktop and on the app grid the situation gets even worse. The purpose of those three layers is in no way obvious and any logical difference in their function is lost in the clutter, to the point that the user doesn’t know anymore where to look for his apps. The similarity is so big that it’s easy to even not know in which of the three layers you currently are.

Wondering why the iPhone and it’s single, dumb app screen is so popular? Think again.

by qwazix at 2013-01-29T20:04:27+00:00


Lucien Xu

[Dev] Having fun with an Iconia tab

I got an Iconia tab as a sort of Christmas present, and I’m very excited about it because it is my first tablet. Having a tablet now bridges some gaps in form-factors in my device collection, and I can study more user-cases with it. This article, or maybe series of articles, will describe some hacking that I’m doing with it, for instance, running the Mer project, and maybe some UI like Nemo or Plasma Active on it.

An orphan in the Asus family

Asus released quite a series of tablets, from the Transformers range to the Iconia range. The Iconia tab W500, however, is a sort of orphan. It is the only Windows 7 based tablet in the Iconia range, and did not received much love. Just after release, the hardware spec were actually already quite bad compared to other tablets. It sports a AMD Fusion A50, that is a 1Ghz dual core CPU, helped with a AMD Radeon HD 6250 GPU, 2 gigs of RAM and an SSD. Being X86 based, and having a BIOS, it is really easy to customize and hack, and a lot of people have already run quite a lot of OS on it, from Linux to Android.

The first thing that I have done to that lovely HW is to install an X86 build of Android. The community behind that project is vibrant, and most of the features worked out of the box. I even got some goodies, like access to Google play and many apps working. But Android rapidly became boring and limited, so I decided to do something funnier, like booting Mer on it, as I always wanted to learn how to deploy a Mer based distribution.

Hacking the tablet

The Asus Iconia tab W500, unlike mobile devices, do not have an USB port. Actually, it does have 2 host ports, but no way to plug it on a computer, so I decided to boot several live USB images. I first tried Nemo, without much success, and then, ran Plasma Active.

The images provided by Basyskom worked pretty well, and nearly everything worked out of the box. Only the touchscreen was not supported. The problem is that this image nearly bricked my device, since it failed to turn on for nearly one hour.

Based on these experiences, I decided to build my own image, using the Mer platform SDK and the kickstart files for the mer SDK, Nemo and Plasma Active. These files are used by an utility called mic, the Mer Image Creator. A pretty tool. It takes that kickstart file, that is basically a recipe to build the image, and that provides the packages to imstall as well as some configurations, and create either a filesystem, a live CD or USB or a raw image.

I first created some hybrid images, combining some components of the Plasma Active image (X86 adaptation Kernel) and the Nemo one (UI), but quickly decided to go to simpler images, so I decided to boot Mer alone, with only the X86 Kernel.

I got some nice fails, like image that could not be created because the glibc was in the i686 repo instead of the i586 one, or the X86 kernel not recognizing the SD card reader, leading to some kernel panic, but I quickly succeded in booting Mer in a few hours of tinkering.

Mer core running on the Iconia tab

Mer core running on the Iconia tab

Nothing is working yet, but I have to say that taking less than one day, for a total noob, to build an image for an unsupported device is pretty impressive (even if the X86 arch helps). Kudos to the Mer project folks that enabled that.


Mer, as a core, do not provide abstraction layer. Well, actually it does, for the SDK target based in VirtualBox for example, and I actually got the Kernel for free. But, not everything is free, and the touchscreen, as well as HW acceleration are yet to be done.

I first started with a nice X session, after messing a bit with uxlaunch, and tried to get the support for the touchscreen. After a bit of Googling, knowing that the touch layer was provided by eGalax, I landed in their proprietary drivers page. A bit more Googling led me to some OpenSuse packages, and I took some inspiration from their spec to build my own one for Mer on the MeeGo community OBS.

I then created an image, and after the furst try, everything just worked. I have to say that the X86 adaptation kernel from Mer actually shipped everything that was required for the touchscreen driver to work, and that the touchscreen manufacturer was nice enough not to build their own solution and reguires a totally new kernel, but instead, tried to integrate.

Aftre that first mini-success some other questions still need to be solved.

  • Which graphical driver should I use: radeon, fglrx, llvmpipe ?
  • Why my X is displayed at 1024×768 insted of 1280×800 ?
  • How to enable multitouch ?

by sfietkonstantin at 2012-12-27T09:32:34+00:00


Rüdiger Gad

nemo-compatibility 0.1.0 – Easily use Nemo Apps on Plasma Active

In several previous posts I wrote about using Nemo apps on Plasma Active. Personally, I think this is pretty cool because you get a lot more nice applications for your Plasma Active tablet for free. Many Nemo applications are very well usable also on the bigger screen of a tablet. I posted screenshots of Nemo apps running on Plasma Active here and here.

In order to ease the installation of Nemo apps on Plasma Active (but possibly also on other systems) I created a special repository and a meta-package that helps you to install the needed packages. I called this package “nemo-compatibility”. The installation should be straight forward and happens in four steps. Note that all this needs to be run as root user.

Firstly, you need to add my nemo-compatibility download repository. Below is an example how this is done for Plasma Active on Archos G9 or other armv7l tablets, but nemo-compatibility is also available for other architectures.

# Add the nemo-compatibility repository (example for Archos G9 and other armv7l systems).
zypper ar -G

Next, you need to install the nemo-compatibility package as shown below.

# Install nemo-compatibility.
zypper in nemo-compatibility

After the installation has finished you need to run a script. You should have gotten a hint to run this script also during the installation. This script will add the required repositories and install required packages. This is shown in the next listing.

# Run post installation script. install

After this has been run you might need to restart Xorg or your tablet. You should have gotten an according notification when you ran that script. The simplest way is to restart Xorg as shown below.

# Restart Xorg.
killall Xorg
# Xorg will automatically restart. Give it a little time.

That’s it. Now you can install Nemo apps like TwimGo, puzzle-master, or Q ToDo as shown below.

# Install Nemo apps.
zypper in com.substanceofcode.twimgo puzzle-master qtodo

There is one caveat right now. For some reasons the icons for newly installed applications do not show up directly after the installation. To fix this you can restart the tablet. The icons should be there after the reboot. However, to test the newly installed apps you can as well start these via a terminal. I will be looking into how this can be fixed later. For now I am very happy that this, in general, works reasonably well to be used in daily usage.

Update: the problem that the icons were not updating properly was a bug in Plasma Active that had been fixed in the meantime. So, the most recent testing versions should not exhibit this issue. Thanks a lot to Aaron Seigo (aka aseigo) for the quick fix. 🙂

Your feedback and questions are highly appreciated. I hope you enjoy using Nemo apps on Plasma Active as much as I do. 🙂

by ruedigergad at 2012-10-30T08:48:57+00:00


Rüdiger Gad

QZeeControl for Mer/Nemo

Today, I also packaged QZeeControl for Mer/Nemo. You can get it from my download repository.

However, please keep in mind that this is still very experimental. It also seems that Bluetooth support is not very mature in Mer/Nemo yet. In fact, today, after an update to the latest versions, was the first time when I noticed that Bluetooth is actually working in Mer/Nemo.

by ruedigergad at 2012-08-11T22:47:03+00:00

VUMeter for Mer/Nemo

Just packaged the QML version of VUMeter for Mer/Nemo. You can get it from my download repository.

by ruedigergad at 2012-08-11T16:46:04+00:00


Rüdiger Gad

Nemo/Mer vs. Battery Status vs. N9/N950

While Nemo/Mer runs reasonably well on N9/N950 there is a little annoying issue: the battery status is not correctly displayed. Reason for this is that there is currently no driver for querying the required information from the battery gauge chip yet.

With the command “upower -d” information about the battery status as “seen” by the system can be queried. By default, in the current stage, this will show output that is not much helpful as we are missing the required drivers.

The battery gauge chip can be accessed via the i2c bus number 2 at address 0x55. At least this seems to be the right chip.

For gathering data from the i2c bus and for interacting with the chip the programs from the “i2c-tools” package can be used. Via, e.g., “i2cdump -y 2 0x55 b” the current “state” of this chip can be dumped to console.

Furthermore, “commands” can be sent to the chip by writing words to the first address of the chip. “Return” values can then be read from the same address. E.g., writing 0x0001 returns 0x0521:

[root@localhost ~]# i2cset -y 2 0x55 0x00 0x0001 w
[root@localhost ~]# i2cget -y 2 0x55 0x00 w

From experiences with the N900, the battery gauge chip could be a chip manufactured by Texas Instruments. Assuming this, the above command could indicate the device type being a bq27521. This would at least match what is defined in the specification for a similar chip, the bq27520. Looking at the file system seems to verify that we are dealing, in fact, with a bq27521:

[root@localhost ~]# find /usr/ -name "bq*"

However, the data that can be queried with i2cdump looks highly differing from what is defined in this specification and so far I could not find a specification of an bq27521 yet.

So the first try is to identify the meanings of the different fields of the chip. In order to do so I queried data over a longer period using the following script:


while : ;
date >> i2c_data.out
i2cdump -y 2 0x55 b | head -n 5 >> i2c_data.out
echo "" >> i2c_data.out
sleep 30s ;

The raw results, notes, and some observations can be found in form of text files at github. So far I came up with the following guesses:

Note that the data seems to be organized in words of 2 bytes. The byte order or endianess seems to be little endian; i.e., the least significant byte is stored at the lower address. The following is an excerpt of the observations that can be found on github.

The following shows a summary of the findings.
"C" indicates the fields used for command I/O including the "display" of "returned" values.
"k" indicates fields that had so far observed containing constant values.
"v" indicates fields with variable values.
"B" is used to indicate the fields for which so far only two different "states" could be observed.

0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: CC CC kk kk kk kk kk kk kk kk vv vv vv vv vv vv
10: vv vv vv vv vv vv kk kk kk kk kk kk kk kk kk kk
20: kk kk kk kk kk kk BB BB BB kk kk kk kk kk kk kk
30: kk kk kk kk kk kk kk kk kk kk kk kk XX XX XX XX

Wild Guesses:
0x0a+0x0b -> Voltage [mV]?
0x0c+0x0d -> Available Energy [mWh], Remaining Capacity [mAh]?
(This seems to have a much higher resolution than 0x12+0x13.)
0x0e+0x0f -> Time To Full [Minutes]?
0x10+0x11 -> Similar to 0x0e+0x0f?
They show very similar data.
0x12+0x13 -> State of Charge [%]?
0x14+0x15 -> AtRate [mA], Average Current [mA]?
Can be used to calculate a difference between subsequent measurements.
Else, this would be pretty useless.

Finally, the battery gauge chip in the N9 seems to be the same as in the N950. At least the output of i2cdump looks similar and using the 0x0001 command returns the same value.

Please see also the following thread on the MeeGo forum that contains very useful information:

by ruedigergad at 2012-06-03T19:08:06+00:00


Rüdiger Gad

Q To-Do on github

Q To-Do is a simplistic todo list organizer. Q To-Do is available for Harmattan/MeeGo and Nemo/Mer. For more information about Q To-Do, its features, usage, installation, screenshots, etc. please see the new Q To-Do homepage at github.

Up to now Q To-Do, including the source code, was hosted within the sourceforge project of To-Do O. However, even while Q To-Do and To-Do O share the same file format, I think, this was somewhat confusing.

I created a new home for Q To-Do on github and moved all the Q To-Do code there. From now on the development of Q To-Do will only happen in the github repository.

Furthermore, I created a new home page for Q To-Do at github as well. There you can find more information about Q To-Do.

by ruedigergad at 2012-05-28T09:36:12+00:00