[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Guile XCB

From: mark
Subject: Guile XCB
Date: Mon, 17 Jun 2013 20:25:43 -0700

Hi everyone,

I'm pleased to announce that Guile XCB is, at last, a real thing! I had
to take a couple months off of working on it, but finally had time
recently to go back and get it in pretty good shape.

You can find it at

In the end I was able to write the whole thing without any C, so maybe
this is a good candidate to include in the Guildhall. I've written a few
simple programs in it but haven't really pushed it too hard. Sometime in
the near-ish future I'd like to write some kind of window manager using
it and I'm sure there will be many bugs found and squashed in the

I also had an interesting time coming up with the necessary autotools
magic to properly compile xml files to go files using the compiler I
wrote and then install them. I'm still not sure if I'm doing it the
right way -- adding new languages is really neat feature of Guile that's
still a little tricky to automate.

Here's the README:

1 Overview

  Guile XCB is an X11 client library written entirely in Guile
  Scheme. It makes use of the Guile compiler and virtual machine to turn
  XML descriptions of the X protocol provided by the XCB project into
  Guile object code files.

  Support is included for the core X protocol and twenty-seven
  extensions. Guile XCB also includes some simple code for running
  asynchronous event loops.

2 Samples and Documentation

  Samples using Guile XCB can be found in the xcb/xml/samples
  directory. They include:

  - tinywm.scm: A Guile XCB implementation of tinywm 
  - win.scm: A simple demonstration of creating a window and receiving
  - randr.scm: A subset of the xrandr command line tool's functionality

  More detailed documentation resides in the texinfo manual included in
  this distribution.

3 Installation and Prerequisites

  You can use the typical ./configure, make, make install chain to build
  Guile XCB.

  Guile XCB requires the latest release of Guile (2.0.9).

4 Project Status and Caveats

  - The full XCB stack is implemented; however, many of the extensions
    haven't been extensively tested.

  - Extensions that send large requests are probably going to be too
    slow for practical use. In a future release, void and byte lists
    should be represented as bytevectors, not regular vectors.

  - Guile XCB includes a stripped-down Scheme implementation of Xauth
    that only supports UNIX sockets for now; it doesn't pick the "best"
    authentication method available, just the first.

  - XPRINT is excluded because it's deprecated and its XML file has just
    enough special cases in it that it wasn't worth including. Some
    other deprecated extensions are included simply because there was no
    reason not to.

Mark Witmer

reply via email to

[Prev in Thread] Current Thread [Next in Thread]