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.


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

Supported versions

CLX should work with SBCL, CCL, ECL and CLISP. If it doesn't please submit an issue along with the version information of your implementation.

Allegro Common Lisp users should use clx version maintained by Franz Inc., which can be found at

Building using quicklisp

(ql:quickload 'clx)

or if you want to use the latest version from git, clone this repository to your local-project and use quickload as described above

cd ~/quicklisp/local-projects/
git clone git://

Building using ASDF

If you don't have quicklisp installed you can use ASDF to load CLX. To do so clone this repository to either:

  • ~/.common-lisp
  • ~/.local/share/common-lisp/source/.

where ASDF will look for system definitions by default

and then on the lisp REPL type

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

If you want to load clx from another location you have to first tell ASDF to look in that directory by adding the directory to ASDF's central registry on every session.

(require 'asdf)
(push "/path/to/the/clx/directory/" asdf:*central-registry*) ; Mind the trailing slash, it is important.
(asdf:load-system 'clx)

or you can configure ASDF to look in your directory as described in the ASDF Manual


To test CLX (and get a small amount of Lisp advocacy), try loading the file "demo/menu", and then executing the function xlib::just-say-lisp.

(load "clx/demo/menu")

Note: 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.


An up to date version of the manual can be found at

Bug reports, new features, patches

Please use github to track issues: # Contributing

To contribute submit a pull request

To report bugs, request features, etc please use the github issue tracker

Heavy lifting by ASDFized version by Daniel Barlow and Christophe Rhodes

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

Texas Instruments Incorporated. Franz Inc, Berkeley, Ca. Independent FOSS developers
graphics library, networking, x11