Garnet
Garnet is a user interface development environment and GUI toolkit for Common Lisp and X11 or Macintosh developed by the User Interface Software Group in the Human-Computer Interaction Institute at Carnegie Mellon University. Garnet helps you create graphical, interactive user interfaces for your software. It is a large scale system containing many features and parts.

From the FAQ:

* Toolkit intrinsics:
   - A custom object-oriented programming system which uses a
           prototype-instance model. 
   - A graphics layer that hides the differences between X/11 and Macintosh.
   - Automatic constraint maintenance: so properties of objects can depend on
           properties of other objects, and be automatically re-evaluated
           when the other objects change.  The constraints can be
           arbitrary lisp expressions.
   - Built-in, high-level input event handling.
   - Support for gesture recognition
   - Widgets for multi-font, multi-line, mouse-driven text editing.
   - Optional automatic layout of application data into lists, tables, trees,
           or graphs.
   - Automatic generation of PostScript for printing.
   - Support for large-scale applications and data visualization.
* Two complete widget sets:
   - One with a Motif look and feel implemented in Lisp, and one with
           a custom look and feel.
* Interactive design tools for creating parts of the interface without
           writing code:
   - Gilt interface builder for creating dialog boxes
   - Lapidary interactive tool for creating new widgets and for
           drawing application-specific objects.
   - C32 spreadsheet system for specifying complex constraints.
  (The next parts are not being released.)
   - Jade automatic dialog box creation system.
   - Marquise interactive tool for specifying behaviors.

Garnet was originally developed at CMU (see the project home page), but they don't support it any more. It claims to run on any Common Lisp implementation "that we have come across which has CLX (interface to X11), which currently includes Allegro, Lucid, CMUCL, Harlequin Lispworks, AKCL, CLISP and TI Explorer Lisps". Garnet was also ported to Macintosh Common Lisp (MCL) and runs under MacOS 9.2 and earlier (MacOS X version of MCL is not available for testing).

Fred Gilham is collecting Garnet patches (or maybe even actively maintaining it?) - see ftp.csl.sri.com:/pub/users/gilham/garnet/. The source code of Garnet has been moved to a SourceForge project for further maintenance and development.

Those who like Garnet may find Constraint Sequencing Infrastructure (COSI) interesting.

Getting Help

Garnet comes with very good and extensive documentation, which includes both tutorial and reference material: 16 manuals, for a total of almost 600 pages. Dozens of research papers are also available. These papers provide overviews of the system and summarize its features.

If you have problems with installing or using Garnet, be sure to check the documentation first (particularly Overview of the Garnet System and Debugging Tools for Garnet; Reference Manual). If you still need help or information you may post a message to the following forums, in the specified order:

  1. the garnet users mailing list (to subscribe or unsubscribe, send mail to garnet-users-request@cs.cmu.edu)
  2. the
comp.windows.garnet newsgroup, which has a bidirectional gateway with the garnet-users mailing list
  • the general help mailing list of your Common Lisp implementation (e.g.
  • cmucl-help for CMUCL or clisp-list for CLISP)
  • the
  • comp.lang.lisp newsgroup

    Note that comp.windows.garnet is a low traffic forum, not an abandoned one.


    I believe that the garnet-users mailing list is no longer gatewayed to USENET, due to spamming. -- Eric Marsden


  • Current garnet development

    See the GarnetLisp project at Sourceforge. As of late 2009, it appears to be the only actively maintained fork (download from CVS).

    In regards to an old, second-hand distribution of Garnet, once made by Sean Champ (and which is no longer maintained) the build instructions are in the README file within the archive file.

    When I tried to build it, the README was of no help. However reading the garnet-prepare-compile, etc... files was of use, but remember to change Your-Garnet-Pathname in garnet-loader.lisp. Also you might want to change Your-Garnet-Src-Pathname and Your-Garnet-Bin-Pathname to be the same as Your-Garnet-Pathname, due to the way the CVS source tree is laid out (I guess it's different from the original). It built and I was able to run the demos but they would display and then stop responding. Don't know what's wrong. -- Matthew Danish (as of 12 May 2002).

    I've been working on maintenance and bug fixes. I'd be interested in anyone's experiences using the pixmap support under Allegro CL to help me debug a problem there. If you've used it and it's worked or not worked for you, please let me know. Robert Goldman

    I have already packaged a new garnet release (under a new major version number 4.0) that is asdf-installable. I am currently testing it with various Lisp implementations as new things like freetype and cairo support have been merged from other projects and many bugs have been fixed. A common-lisp.net hosting of the project is still pending. Stelios Kokkalis