CLM
CLM is an interface to the Motif GUI toolkit. Actually there exist two independent, slightly incompatible Motif interfaces based on the same idea that are often called CLM:

  • The original CLM interface was developed by the GINA group at the German GMD. It served as the basis of the GINA Interface Builder. This implementation is very well documented, cross-platform and mature. Development stopped at release 2.3 (for Motif 1.2.3) in 1994. It is available at ftp://ftp.x.org/R5contrib/ together with the layered Interface Builder stuff, reports, etc.
  • The CMUCL Motif interface, written by Michael Garland, which was probably inspired to a large extent by the GMD CLM, but diverges in several areas to some degree. This interface is less complete, less well documented, CMUCL-only, but is part of the CMUCL maintenance effort. It too was designed against Motif 1.x, although it too mostly works with Motif 2.x, without taking advantage of new 2.x features. It is available as part of the CMUCL extra distribution tarballs, as well as the CMUCL source tarballs.

Both interfaces are based on the same idea: They consist of two parts, a C-based server daemon, that links to the Motif libs, and the actual Common Lisp interface code, which communicate across a socket using an extensible protocol. Furthermore the C source-code for the server daemon is automatically generated from Common Lisp specifications. This provides for a fairly hassle-free (no FFI code, no wrestling with the GUI toolkit to get control of the event-loop, etc.) environment, that can be easily extended for access to new widgets, or (theoretically) even completely new toolkits.

If present, the toolkits can be integrated with CLX, so that you can combine low-level X primitives with high-level Motif code, if wanted.

As it stands, CMUCL/Motif provides a solid basis for GUI applications on X/Motif. Since it is a fairly direct translation of Motif widgets, functions and concepts to CL, while leaving the ugliness of C behind (much like CLX does for X11/Xlib), Motif experience and documentation can be re-used as-is. With a couple of utility functions and macros, for widget creation, management, etc., creating GUIs with CMUCL/Motif can be quite similar to programming with Lispworks' CAPI.

CMUCL also comes with CMUCL/Motif-based debugger, inspector and control-panel, that can be enabled if CMUCL/Motif is loaded.