Skip to content
a fork of crhodes' fork of danb's fork of the CLX library, an X11 client for Common Lisp
Common Lisp C
Find file
Failed to load latest commit information.
debug Initial revision
demo Fix demo/gl-test.lisp compile errors on LispWorks.
manual Add paragraph explaining the default values of the keyword arguments.
test Fix up warnings, style warnings, etc.
CHANGES update for 0.7.1
NEWS NEWS for 0.7.3
README first stab at bringing the README up to date to reflect sharplispers …
README-R5 Prepare for first release (0.4, continuing the numbering from Raymond's
attributes.lisp colormap / cacheing interaction fixes
big-requests.lisp big-request-extension
buffer.lisp minimally-refactor-buffer-readers-and-writers
bufmac.lisp Initial revision
build-clx.lisp Initial revision
clx-module.lisp Initial revision
clx.asd Revert "added double buffer, randr, and xc-misc"
clx.lisp mumble-equal microoptimization
cmudep.lisp Initial revision
defsystem.lisp Port to the ECL (Embeddable Common Lisp)
dep-allegro.lisp Add support for modern Allegro CL. Should be good for versions >= 6.2.
dep-lispworks.lisp Add support for LispWorks 6.
dep-openmcl.lisp Some fixes for Clozure from Fred Gilham.
depdefs.lisp Fix unix domain socket detection on OS X.
display.lisp Handle xauth with null display
dpms.lisp dpms
exclMakefile Initial revision
exclREADME Initial revision
exclcmac.lisp Initial revision
excldefsys.lisp Initial revision
excldep.c Initial revision
excldep.lisp Add support for modern Allegro CL. Should be good for versions >= 6.2.
fonts.lisp Don't lazily not call QUERY-FONT in OPEN-FONT any more, following
gcontext.lisp Fix typesafety bugs in DEFINE-GCONTEXT-ACCESSOR
generalock.lisp Initial revision
gl.lisp Some fixes for Clozure from Fred Gilham.
glx.lisp Add GLX extension support (Janis Dzerins on the portable-clx mailing …
graphics.lisp The great renaming, part I:
image.lisp Fix "too many arguments to format" problem -- clearly a rewrite to
input.lisp resource-id management
keysyms.lisp only 256 characters
macros.lisp define pad32 accessor (useful in xtest requests)
manager.lisp Handle shorter WM_HINTS
package.lisp big-request-extension
provide.lisp Initial revision
requests.lisp fix-get-keyboard-control-autorepeats-offset
resource.lisp Initial revision
screensaver.lisp partial mit-screen-saver support
shape.lisp The great renaming, part I:
sockcl.lisp Initial revision
socket.c Initial revision
text.lisp translate-default-and-nil-font
translate.lisp Improve grammar in comment explaning what DEFINE-KEYSYM does.
xinerama.lisp Support for the XINERAMA extension
xrender.lisp Move some definitions up so they precede accessor uses. Eliminates st…
xtest.lisp xtest extension implementation
xvidmode.lisp Move __card32->card16__ earlier in its file.


CLX is an X11 client library for Common Lisp. The code was originally
taken from a CMUCL distribution, was modified somewhat in order to
make it compile and run under SBCL, then a selection of patches were
added from other CLXes around the net.

= Features

 - SHAPE extension support (Gilbert Baumann)
 - XFREE86-VIDMODE extension support (Iban Hatchondo)
 - experimental RENDER extension support 
     (Gilbert Baumann and Christian Sunesson)
 - X authority support that works with ssh forwarding (Eric Marsden via CMUCL)
 - OPEN-DEFAULT-DISPLAY function which, as the name suggests, does that (dan)
 - various bug fixes (Iban Hatchondo and a cast of several)
 - a manual in texinfo format (Shawn Betts, Gilbert Baumann)

= Compatibility

This CLX distribution is intended to work under the latest released
version of SBCL - please report the bug if it doesn't.  It should
usually also work with earlier versions back to 0.9.0, and possibly
earlier still, but may need manual adjustment to the clx.asd file (to
remove use of newly-introduced features).

It has also been used as a basis for CLX ports on other Lisp
implementations, but these instructions are only good for SBCL. If
you've installed this using some non-SBCL Lisp, please send mail
describing the process so that future versions can incorporate your

If you are following SBCL CVS and this CLX does not run in it, please
check the git repository for this CLX distribution to see if your bug
has been fixed already.

git clone git://

= Building using quicklisp

* (ql:quickload 'clx)

= Building by hand

If you don't trust quicklisp, here's how to do it manually -

1. Add a symlink to clx.asd from one of the directories listed in your

   If that makes no sense to you yet, choose one of -

   1a. personal installation:

     $ cd $HOME/.sbcl/systems # you may have to create this directory
     $ ln -s /path/to/clx/source/clx.asd .

   1b. systemwide installations: you need to ask SBCL where it lives

     $ sbcl --noinform --eval '(format t "~A~%" (posix-getenv "SBCL_HOME"))' </dev/null
     $ cd /usr/local/lib/sbcl/site-systems
     $ ln -s /path/to/clx/source/clx.asd .

   * (require 'asdf)
   * (asdf:load-system 'clx)

This will load all the files, after compiling anything that needs compiling

3. To test CLX (and get a small amount of Lisp advocacy), try loading
the file "demo/menu", and then executing the function

   * (load "clx/demo/menu")
   * (xlib::just-say-lisp)

4. If you're new to Lisp, be advised that despite the examples in
demo/, it's generally /not/ considered good style to switch to the
:xlib package and write your code in it.  Spend some time with a
language reference to familiarize yourself with USE-PACKAGE, or 
better yet, the USE option to DEFPACKAGE.

= Known problems:

(none reported)

= Bug reports, new features, patches

Please use github to track issues:

and pull requests:

Heavy lifting by <Raymond.Wiker at>
ASDFized version by Daniel Barlow <dan at> 
and Christophe Rhodes <csr21 at>

The sharplispers group on github have recently (November 2011)
"adopted" clx and maintain the version that lives at:

Something went wrong with that request. Please try again.