Escher peers progress

Yesterday I did the antialiasing, which is needed especially for TrueType font rendering to look nice. Today I fought a little with window manager hints. I found it a little surprising that there’s apparently no standard way to open undecorated windows. Most toolkits seem to rely on Motif proprietary hints. There’s the other two options to make a Window ‘override-redirect’, which creates a Window without decorations, but also one that sticks in front of all other windows, or you can use one of the logical hints in the Extended Window Manager Hints spec, in this case I declare the window as TOOLBAR, which isn’t semantically correct, but does the job, at least under GNOME’s window manager.

Anyway, all this makes Swing apps look much better now (except for icons):

And it’s even quite snappy, considering that almost everything is done in Java.

BTW, I consider to attend the X developer summit 2007, and probably do a presentation about Escher. Not sure if I can make it though.


About Roman Kennke
JVM Hacker, Principal Software Engineer at Red Hat's OpenJDK team, Shenandoah GC project lead, Java Champion

6 Responses to Escher peers progress

  1. Havoc Pennington says:

    If you just mean “undecorated” the Motif hint is a better choice than TOOLBAR, for all window managers I know of. Every WM of note supports the Motif hint.

    It will break things to use a semantic hint for the wrong semantic. Better to use the nonsemantic hint.

  2. roman says:

    Havoc: I think you might be correct. However, I can’t find any documentation about the Motif hints implementation at protocol level. With toolbar this is easy, I just send the two X Atoms for the TOOLBAR property, and that’s it. However, looking at how it’s implemented elsewhere (e.g. GDK), it seems like the Motif hints are a little more complex.

  3. flowinto says:


    really nice stuff – this escher project.

    Do you know a ported Gui-API , so that it uses the escher X11 functionality in background.

    In other words: Is there an API where I can write something like:

    new Window(“X11Window Title”).add(new Button(“Hello X11 World”));

    Where the Window with the containing button is send to the X-Server using the escher-lib? Or do I have to write all GUI-widgets on my own using rudimentary x11-graphic-functions like lines, rectangle …



  4. roman says:

    flowinto: The only project like this I know is (one of) the AWT implementation in GNU Classpath. There I implemented a backend for AWT which uses Escher. This means, you can use the standard AWT and Swing APIs for creating a GUI with Escher.

  5. flowinto says:

    sounds really great!!!

    would you provide a link or do you have further informations…like, is there a brunch of GNU Classpath I must use? I have never done anything with GNU Classpath.

    Thank you in advance,


  6. roman says:

    Adrian: You can download the latest release here. Maybe wait a few days, then a new version will be released, which has much better support for Escher. You have to build Classpath with a special configure switch to enable Escher:

    ./configure –with-escher=/path/to/latest/escher/build

    and then the usual make && make install

    Also note that you need the latest SVN Version of Escher for this (I must beat myself to push a new release out soon). Escher can easily be built using Ant.

    If you have all this in place, you still need a JavaVM that uses Classpath. I recommend JamVM or CacaoVM.

    I hope there will be packages of all this soon after the release of Classpath and Escher in the Debian/Ubuntu/Fedora repos, it’s a relatively convoluted installation for inexperienced users otherwise.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: