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.

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

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).

The Xglamo xserver (at least the version in FSO-MS5, i.e.
1.3.0.0+gitr9b2~7dd3a022ccbb122793a52) 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.)

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)

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.

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 ...).

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.

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.

Configure qwo to be transparent. Just create a file ~/.qworc containing a single line:

transparency_enabled = "true";

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).