This is the public release of zenvoid-desktop, a desktop environment for tablets and mobile devices. It provides a minimal user interface for performing basic operations such as launching applications, switching between running tasks, entering text with an on-screen input method, showing battery status or changing the screen backlight level.

zenvoid-desktop is composed of a small set of packages, everything else is provided by the GNU/Linux distribution laying under it, which is Debian in the provided filesystem images.

I’ve been using several mutations of zenvoid-desktop for several months now, running on diverse hardware. All versions were different, testing different configurations for each one; and due to requests I’ve been receiving, here it is the first attempt to unify and release it.

Applications do not need to be ported, they are the same applications made for traditional desktop computers. Combined with a root filesystem, provides a quick and convenient way to start hacking a device. It is important to notice that, while it is very convenient to run the same full desktop applications without changes, they are definitely not comfortable to use on tablets. No matter how friendly those screenshots seem to be, this is not a finished, friendly environment for daily usage. It can be seen as a bare minimum environment to resurrect otherwise “dead” hardware, when manufacturer does not develop its operating system anymore, or when the original operating system contained proprietary software (almost always sadly).

Basic instructions

Main application windows usually start in maximized state while dialogs or special windows start in a floating window. If the window title is tapped when the “secondary action” button is active, it will reveal a menu with common window operations (maximize, minimize, resize…).

Input method

The purpose of the input method applet is to allow entering text with a touchscreen, either by an on-screen keyboard or by handwriting recognition. It is based on CellWriter, modified for zenvoid-desktop. It can switch between different keyboard layouts, which are installed under /usr/share/zenvoid-input-method/keyboard/. Layout files are currently not documented, if you want to make a new one, try looking at the included layouts, they are plain text files.

Input method window can be moved around, like other windows, or it can be docked to top or bottom edges of screen (by pressing the top-right arrow button). No matter where it is, it will always be covering something, hide it when not needed.

Handwriting recognition works very well with resistive touchscreens and it is almost impossible to use on capacitive. On the other side, the on-screen keyboard is more comfortable to use on capacitive touchscreens. SmartQ5 and SmartQ7 are both resistive.

The graphic below shows the handwritten symbols included by default in the provided root filesystems. It is possible (and recommended) to train the input method with custom samples. When correctly trained it will allow entering text very fast, specially when trained with gestures or simplified symbols. To reset and forget previous samples for one symbol, press on its cell with the secondary action button.

Hardware buttons

Some windows may be larger than the screen. Hardware buttons can be used to move them and expose the hidden parts. This is the hardware button configuration:

POWER

Show power menu: shutdown, lock device.

Unlock device when it’s locked.

ALT: Key between + and – in SmartQ5, below LED in SmartQ7

Toggle fullscreen (short tap).

Move window (hold button and drag window)

PLUS [+]

Page down

MINUS [-]

Page up

How to become root

Launch terminal emulator (System Tools > Terminal). Then type:

sudo -i

Default password is password. Probably a good idea to change it after the first boot…

How to change desktop background

There is no desktop interface for changing the background, so even a simple task like this must be done by command line for now. Edit or create file /home/user/.config/zenvoid-desktop/config.

[options]
background=/home/user/Pictures/forbidden-thoughts.png

To reload the background image, execute:

echo -n B > /home/user/.config/zenvoid-desktop/fifo

Downloading and installation

The provided filesystem for SmartQ5 and SmartQ7 contains zenvoid-desktop on top of an optimized Debian base system (where almost all included packages are recompiled for armv6 with vfp). It should be installed in the first partition of the SD card, ext3 format, and expects a swap area in the second partition. For other layouts, edit /etc/fstab in the root filesystem before booting it.

All other software packages included in the root filesystem archive are taken from the Debian package collection, most of them compiled from sources.

Bugs

Probably lots of bugs and unfinished features. Top most annoying issues:

Override-redirect windows will appear over the lock screen, and will also popup over the input method when typing. Unfortunately, the only way to properly fix it is by patching the xorg server (and that’s what I’m planning to do). More information in this xscreensaver bug report.

Panel crashes sometimes. The current implementation is based on tint2, it was buggy even before applying the ugly hacks required for zenvoid-desktop. It is going to be replaced.

What about future?

I don’t know, really. Initially this software was not meant to be released, it was nothing but a quick way to give some use to the piles of old hardware I collect. I would want to rewrite it (or parts of it) for Qt but… who knows.

The is an almost complete root filesystem for Nokia n810, along with experimental versions for Nokia 770 and NookColor. The n8x0 version will be probably released at some point in the future.

Comments

Hi Roberto!
You are simply the BEST!
I don’t want to bury my SQ5 and would like to try to install your awesome zenvoid-desktop but the link seems to be dead ;-(
“The requested URL /software/zenvoid-desktop/rootfs-smartq5-20120908.tar.xz was not found on this server.”
Thanks for your great job!!!

Thanks Roberto, you’re a God reviving doomed devices! I’ll try to ijstall your terrific new desktop to my mistreated SQ5! I wish I could participate in the Qt project! But I have NO skills in programming ;-(

Hi again Roberto!
I intend to TRY to install your new tablet-friendly OS on my SQ5 but I wanted to know if you think it a good idea to use a script like this one (with the right changes at the right place ;-)?http://sourceforge.net/projects/qdroid-inst/

WOW. Cyrille, I think you are expecting too much about the software. I’m afraid that if you are having trouble to install, it is very likely that you’ll find it hard to use as well. There are no easy to use UI components for configuration, and most things must be done by hand for now (like calibrating the touchscreen…). Anyways, I’ll try to answer your questions:

Please create only one ext3 partition, not two. Assuming you are using an USB card reader, extract it and plug it again when partitions are created or modified. Then, format the ext3 partition with mkfs.ext3 and the swap partition with mkswap. Mount the ext3 into a temporary place, for example “mount /dev/sdb1 /mnt”. Always mount it by hand with the “mount” command and root user, if your desktop computer automounts it, umount it first. Change to the mount directory and unpack the rootfs there, as root, using “tar xJf”. Umount it and plug the sd card into your SmartQ.

That should be all. Be very careful when working with device names in the command line, you know, it is very easy to wipe your hard disk by mistake…

Thanks Roberto!
It’s also part of getting used to Linux in a useful manner to me!
I’ll try tomorrow, but is the ./install-smartq-qi.sh /dev/sdb smartQi-Q5-20120515.bin to be run after unpacking the rootfs?
Thanks again for your precious support! For now I can only use my SQ5 with Qdroid 1. Qdroid 2 is so unstable it’s unusable!
I wish I could install a Linux version like yours! And then dream of using it regularly even if it’s not (yet ;-) optimized ;-)
And in another life dream of improving your latest work, Zenvoid-desktop!

The bootloader can be installed after or before unpacking the rootfs, there is no difference. I hope the desktop is useful to you, I’ll try to make it easier to use and better documented in subsequent versions. Have fun.

Victory!
Thanks to your clear and king messages I managed (easily ;-) to install your zenvoid-desktop! It’s great! Would there be a special way to have a usb keyboard recognized and used under your awesome new desktop? Thanks again for everything!!!
PS: At the booting log there is this:
udev requires a kernel >= 2.6.26 not started… Failed

Hi again!
I’m like a kid learning how to ride a bike on a Harley-Davidson without a helmet ;-)
I remember installing Mer on my SQ5 few years ago and I have the same feeling of a great desktop; yours being much more improved, styled, easy and optimized! Great job!!!
The thing is I remember I could type on a USB keyboard to use the terminal (and learn how to use Unix commands directly applied to the SQ5); do you think there are some special steps to do to achieve that? Or is there a (bad) chance my USB ports (Yes I unsoldered the BT and replaced it with a standard size USB port) are defective? Is there a quick and reliable way to check that?

Hi again!
I remember when I had Linux on my SQ5 I encountered a problem linked to hibernation! When the device is idle for a few minutes, the screen turns black and when I want it to go back to service nothing happens! The solution might be to force no sleep/hibernation schedule, but I never found a good solution ;-( If you have a few more interesting thoughts…
Thanks again!

Hi Roberto!
You’re probably fed up with my messages! Let me tell once more how great your work is! Even if the Qdroid2 porting is very fast (but not reliable! I noticed it freezes each time the on-screen keyboard pops up!!!) your zenvoid-desktop is a hit! I guess I’ll continue using it instead of Qdroid1 I used to be using before you transformed my dead-nand SQ5 into a real performant Linux desktop!

I don’t know where to start answering your questions, I’ll try to summarize all topics:

udev does not work due to the old kernel, it is a common problem of old devices. Porting smartq patches to newer kernels is too much work, right now I have no plans to make udev work on smartq.

An USB keyboard requires the USB controller to be changed to host mode, most likely it will boot in device mode by default. In addition, since there is no udev, configuring usb devices may be tricky. The mini-usb port can be easily converted to full usb port by plugging an adapter, they are cheap, around $2.

You can install any package from Debian repositories if you want. They won’t be optimized for the CPU, but they should work. If you update with apt-get, it may want to replace most packages in the rootfs with armv4t-with-no-fpu packages from Debian armel repositories. Doing that will have a big impact in performance, specially for programs using the fpu which will slow down very noticeably. I’ll try to publish my custom repository of recompiled packages in the future to avoid this.

I’ve seen the problem with SmartQ5 screen when device is idle (only happens with Q5, Q7 is fine). Seems to be a hardware bug in some units, I’ve ignored this problem because I thought only early Q5 units were affected, but if you are experiencing it, it may be more common than I thought. I will look into it. For now, powering off/on the screen several times is the only workaround that I know.

Thanks for your clear, fast and thoroughful answers! I bought a USB adapter but it does not seem to work… No keyboard is being recognized (it used to work when I had the original SQ5 Linux firmware working!) that’s why I think the mini-USB port is dead… I had bought an OTG usb adapter and it used to work…
Or something else is missing me… How could the USB controller be changed into host mode?
Anyway I’m very grateful to your devotion, perseverance, patience and very high skills!

Hi Roberto!
I used SmartQ Magic SD to check if my USB port is dead or not (I had not thought about that before ;-(
It is working! To revive my NAND I guess I would need a backup.sh file from a sane SQ5…
But where on this Galaxy is that findable ;-)

way to kick ass on a solid q5 revival, rocks very hard, awesome vision.
you mention a method for screen calibration via cli? think it needs some tweaking here.
produced something similar, though less involved, to offer a workable os/de on the (otherwise pretty unusable) ai touchbook, and contributed on the original q5 mer project with stskeeps.
have a couple of more in depth questions on some applications and the underlying debian framework, maybe we can link directly via email?

Hi mu3en, the easier method that I know for screen calibration is to install libts-bin package and execute ts_calibrate program. Of course you can send me email if you want, I may be a little bit slow to answer but I’ll eventually see your messages.

Hi, i got a working debian in a cheap chinese 7″ tablet with a allwinner a10 cpu (Cortex A8). ¿is there any way to get the zenvoid-desktop components running on it?
Right now i’m working over a LXDE desktop with Florence virtual keyboard, it works pretty fine, but it’s ugly and some things in LXDE are good for desktop pc’s, but not for mobile touch devices.