Transparent QWO

Qwo is an implementation of quikwriting working on the openmoko. It is quite finger-friendly, especially when the keyboard is large. In the default setup, however, large keyboard leaves too little screen space for the running application. One possible solution to this is to make the keyboard transparent, and do not resize the application when the keyboard is displayed. In this way, the content of the application is visible, but input from the touchscreen is processed by the keyboard.

Screenshot Screenshot

This page describes how to set up the transparency. I tested in on FSO milestone 5. For binary packages, you can use these feeds:

src/gz meru-all
src/gz meru-armv4t
src/gz meru-om-gta02
I.e., just create a file /etc/opkg/meru.conf with these lines and run opkg update. You can replace fso-ms5 with shr or shr-unstable to get packages for shr and shr-unstable (but these feeds are not up to date, so they might not work for you).
  1. The Xglamo xserver (at least the version in FSO-MS5, i.e. has two problems: It crashes quite often when using the composite extension. Furthermore, when the xserver is busy, it merges movement events, i.e., if it was working for some time and then receives a batch of movement events from the touchscreen driver, it remembers only the last event. This, however, seriously degrades the quality of gesture recognition of qwo. Both problems can be fixed by applying the following patch. (First part of this patch is included in recent SHR, the second one not.)
  2. Compile Xglamo (with composite extension enabled, but this should be the default). Alternatively just use the above-mentioned feeds to reinstall xserver-kdrive-glamo. (opkg install -force-reinstall xserver-kdrive-glamo)
  3. Turn on the composite extension in Xglamo startup script. On FSO, this is in the file /etc/X11/Xserver. Add something like
    ARGS="$ARGS +extension Composite"
    just before running xinit.
  4. Install and enable xcompmgr. Compiling should just work in openembedded, binary is in the feeds. You can start it e.g. by a script in /etc/X11/Xsession.d. Put there a file containing
    xcompmgr &
    Make it executable (chmod 755 ...).
  5. Install qwo. You can use the following .bb recipes. A patch against qwo-0.4 that enables transparency plus some bugfixes/enhancements is included. The binary is in the feeds.
  6. Make illume aware that you might want a transparent keyboard. You can use this patch to force illume not to take the height of the displayed keyboard into account. It also makes illume not to force the width of the keyboard to be equal to the width of the screen. (This patch no longer breaks the illume internal keyboard.) Again, patched binary of illume is in the feeds.
  7. Configure qwo to be transparent. Just create a file ~/.qworc containing a single line:
    transparency_enabled = "true";
  8. Enjoy! Information about qwo usage can be found on its webpage. At startup, the qwo window should be 30% transparent. You can adjust the level of transparency by similar gesture as used for resizing the window, but started in some of the bottom regions. E.g., starting on 'u', hitting all regions, and extending the gesture at least one region more ('s', 'o', '>', 'i', 'e', 'a', '<', 'u', 's') makes the window 10% more transparent. Extending by more than 1 region makes it more transparent. Making the gesture clock-wise makes the window more opaque.

You can also compile the simple transset utility and set transparency for other windows ;-). I quickly hacked a .bb recipe, binary is in the feeds, too.

If you found some bug in the following instructions, or have some other comments, do not hesitate to contact me at riso at ksp dot sk.

Last update: 7.April 2009

Old updates

Update (14.3.2009): I got some reports that the binary packages work on OM2008.12, too, except for the illume binary. Richard Guest contributed his build of patched illume for OM2008.12, so you can try it instead of the binary provided at step 6. (warning - this is the old version that breaks the internal keyboard).