CLX
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://github.com/sharplispers/clx.git

Bundled versions of CLX for different implementations:

  • CMUCL: available from CMUCL download sites in the extra package.

  • CLISP comes with two implementations of CLX - the original MIT-CLX and NEW-CLX which is faster and has some extensions.

  • LispWorks - Barry Wilkes ported the MIT R5.02 sources to LispWorks for Linux - http://www.bew.org.uk/Lisp/index.html. Other UNIX ports of LispWorks have a version of CLX supported by Xanalys.

  • OpenMCL (based on telent CLX) at ftp://clozure.com/pub/CLX/

  • Allegro Common Lisp: comes with CLX. You can browse the version distributed with Allegro CL here; it appears to be the same as the MIT sources, featurewise.

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/ common-lisp.net CVSWeb entry
  • XEMBED by Alessandro Piras (available in quicklisp)
  • Small part of XKeyboard by Michael Filonenko (available in quicklisp)

Extensions

  • CLX-TRUETYPE is library for rendering antialiased fonts using ZPB-TTF, CL-VECTORS.
  • CLX-CURSOR is library for rendering antialiased cursor. It supports theming and animated cursors. Cursor images are readed from Xcur files.

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 interfce

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

This download link is for benefit of ASDF-INSTALL only: if you're installing manually, get an up-to-date version from the github address or using QuickLisp. ASDF-install package (obsolete) http://common-lisp.net/~abridgewater/dist/clx/clx-0.7.4.tgz