CLX provides an implementation of the X Window System protocol to Lisp graphics library[ies] and applications. It is the Common Lisp equivalent of Xlib.

portable-clx (formerly called "telent CLX") is used in SBCL and also forms the basis of the OpenMCL and ECL CLX packages. As of 0.7.3 it additionally supports Allegro CL. It includes Unix-domain socket support, SHAPE, XRENDER, XFREE86-VIDMODE extensions, authorization fixes for ssh-forwarded connections, and many other bugfixes and performance improvements. Usually tested against the latest released SBCL.

# This is the version used in QuickLisp
git clone git://

Bundled versions of CLX for different implementations:

The CLX Manual is available in HTML and texinfo.

Supported X11 extensions

  • XRENDER by Gilbert Baumann (basically done in the telent tree)
  • XSHAPE and XFREE86-VIDMODE in the telent tree
  • GLX (experimental) and DPMS (also in the telent tree)
  • BIG-REQUESTS (work begun in Christophe's darcs repository)
  • Some XSM work has been done in Eclipse; e.g.: eclipse/lib/sm/
  • XEMBED by Alessandro Piras (available in quicklisp)
  • Small part of XKeyboard by Michael Filonenko (available in quicklisp)
  • XDBE (double-buffering) in InvalidCo's fork on github

Opportunities to contribute

  • Adding more effective declarations
  • Update the CLX Manual.
  • Adding documentation strings to functions (mostly just converting existing good comments to strings).
  • Better i18n
  • Support for the MITSHM extension
  • Use XmlXcb (XML description of the X protocol as used by XCB) as basis.

ssh-forwarded connections

The standard CLX function OPEN-DISPLAY doesn't correctly extract the display number from the DISPLAY environment variable. This is a problem when using CLX on an ssh-forwarded X11 session, as ssh typically uses display number 10+n. Additionally, CLX in its MIT guise doesn't handle xauth very well, requiring the xhost blunt instrument before it'll put up a window on such a display. This is handled correctly in CMUCL CLX (use EXT:OPEN-CLX-DISPLAY) and in telent CLX (XLIB:OPEN-DEFAULT-DISPLAY). See CMUCL Hints for more information.

CLOS interface

Paul Foley wrote CLOS class wrappers for X events.

Example programs

Perhaps you want to have a look at the source code of Acclaim as it directly uses CLX without any layer in between to display the rendered slides on screen.

Topics: x11 networking See also: GUI toolkits

If you're installing manually, get an up-to-date version from the github address or using Quicklisp.