An implementation of the Common Lisp Interface Manager, version II
nsrahmad Merge pull request #604 from McCLIM/transformation-fix
fix regression with transformations and add better specializations.
Latest commit 5cd9b1d Nov 7, 2018
Failed to load latest commit information.
Apps cleanup: remove non-standard function climi:convert-from-relative-to-… Oct 9, 2018
Backends clx: medium: fix LINE-STYLE-EFFECTIVE-DASHES for non-list dashes Nov 5, 2018
Core standard-input-editing-stream : mix drei:single-line-mixin Nov 6, 2018
Documentation cleanup: eradicate with-special choices and clx-pane-mixin Sep 27, 2018
Examples fix ::pointer-documentation in Examples/accepting-values-test.lisp Nov 4, 2018
Experimental cosmetic: mv fonts to the Experimental/ May 31, 2016
Extensions line-style-unit: better implementaiton Nov 1, 2018
Images Sundry fixes to run without multiprocessing support. Apr 21, 2002
Libraries standard-input-editing-stream : mix drei:single-line-mixin Nov 6, 2018
Lisp-Dep Lisp-Dep: remove unnecessary "fixes" Aug 11, 2017
Tests tests: add tests for ellipse regions Nov 1, 2017
Tools design: move GENERATE-NAMED-COLORS into Tools/generate-named-colors.lisp Oct 16, 2018
.gitignore documentation: html is in directory mcclim May 9, 2017
Copyright Initial check-in Jun 8, 2000
INSTALL cleanup: remove beagle backend Sep 27, 2018
NEWS Release 0.9.7 "Imbolc". Feb 16, 2018 Fix typos in May 30, 2018
TODO Revert "Removed .cvsignore, INSTALL, NEWS, README & TODO as all this … May 26, 2016
clim-lisp.asd clim-lisp: fix asd file Aug 11, 2017
mcclim.asd remove mcclim-ellipse extension Oct 15, 2018
package.lisp clime: unify pane/stream/medium-background/foreground Nov 1, 2018
patch.lisp clim-lisp-patch: fix defpackage Aug 11, 2017

McCLIM 0.9.8-dev post-"Imbolc"

McCLIM, an implementation of the "Common Lisp Interface Manager CLIM II Specification", is a portable and high-level user interface management system toolkit for Common Lisp. It has a powerful presentation model which allows us to directly link the visual representation of an object to its semantics. It has several high-level programming capabilities that enable us to develop a user interface conveniently; including formatted output, graphics, windowing and commands that are invoked by typing text, keyboard shortcuts or clicking a mouse button.

McCLIM works with Allegro CL, Clozure CL, CLISP, CMUCL, Embeddable CL, the Scieneer CL Common-lisp, SBCL and the LispWorks implementations. Right now the only backend supported by McCLIM is CLX, which ties it to the Xserver on the host system. Any platform capable of running Xserver may run McCLIM applications.

Installing McCLIM

McCLIM is available on Quicklisp. Make sure you have installed a supported Common Lisp implementation and Quicklisp is configured correctly. Then, McCLIM can be installed by entering the following in your REPL:

(ql:quickload "mcclim")

To see if McCLIM works on your host you may load the system with examples and run the example browser application:

(ql:quickload "clim-examples")   ; Load the system with examples.
(clim-demo:demodemo)             ; Run the example browser application.

An Example

  1. Quickload McCLIM by running (ql:quickload "mcclim").
  2. Put the following code in a file example.lisp.
(in-package :common-lisp-user)

(defpackage "APP"
  (:use :clim :clim-lisp)
  (:export "APP-MAIN"))

(in-package :app)

;;; Define a application-frame (a.k.a. application window in traditional GUI's).

(define-application-frame superapp ()
  ;; :panes section describes different parts of the
  ;; application-frame. This application has only one pane.
   (int :interactor :height 400 :width 600))

  ;; :layouts section describes how the panes are layed out.
  ;; This application has one layout named "default" which has a single pane.
   (default int)))

;;; Following function launches an instance of "superapp" application-frame.
(defun app-main ()
  (run-frame-top-level (make-application-frame 'superapp)))
  1. Load the file and run:



You can access the McCLIM manual draft PDF if you want, but it's still a work in progress. Several other CLIM 2 resources are listed on CLiki and McCLIM homepage.

Subdirectory Overview

  • Apps - sample applications. This includes:
    1. Apps/Debugger - Peter Mechleborg's debugger (similar to Slime's).
    2. Apps/Functional-Geometry - Frank Buss and Rainer Joswig's functional geometry package for drawing "Escher" tiles.
    3. Apps/Inspector - Robert Strandh's inspector (similar to slime's).
    4. Apps/Listener - Andy Hefner's Lisp Listener.
    5. Scigraph - BBN's graphing package.
  • Documentation - Contains available documentation such as Documentation for Libraries Drei and ESA, A Guided Tour of CLIM, Specification in LATEX source and Manual in LATEX and texinfo sources (For the time being, texinfo manual contains some additional Documentation not found in LATEX version).
  • Examples - Sources for the examples in clim-demo and some additional examples. These are of varying quality and style; many of them date from when McCLIM was quite incomplete.
  • Extensions - Contains several extensions to CLIM 2 spec, such as fonts, additional layouts, bezier, images etc. Most of them are loaded automatically with McCLIM.
  • Libraries - Contains Drei and ESA Libraries. See Documentation for details.

Important Links