Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news-out.internetmci.com!infeed2.internetmci.com!newsfeed.internetmci.com!nntp.info.ucla.edu!nntp.club.cc.cmu.edu!cantaloupe.srv.cs.cmu.edu!mkant
From: [email protected] (Mark Kantrowitz)
Newsgroups: comp.lang.lisp,news.answers,comp.answers
Subject: FAQ: Lisp Window Systems and GUIs 7/7 [Monthly posting]
Supersedes: <[email protected]>
Followup-To: poster
Date: 13 Aug 1997 07:17:28 GMT
Organization: Carnegie-Mellon University, School of Computer Science
Lines: 312
Approved: [email protected]
Distribution: world
Expires: 24 Sep 1997 07:00:20 GMT
Message-ID: <[email protected]>
References: <[email protected]>
Reply-To: [email protected]
NNTP-Posting-Host: glinda.oz.cs.cmu.edu
Summary: X Window System, GUIs and other Window Systems in Lisp
Xref: senator-bedfellow.mit.edu comp.lang.lisp:28929 news.answers:109685 comp.answers:27564

Archive-name: lisp-faq/part7
Last-Modified: Fri Mar 22 16:00:46 1996 by Mark Kantrowitz
Version: 1.54
Maintainer: Mark Kantrowitz and Barry Margolin <[email protected]>
URL: http://www.cs.cmu.edu/Web/Groups/AI/html/faqs/lang/lisp/top.html
Size: 18249 bytes, 320 lines

;;; ****************************************************************
;;; Lisp Window Systems and GUIs ***********************************
;;; ****************************************************************
;;; Written by Mark Kantrowitz and Barry Margolin
;;; lisp_7.faq

This post contains Part 7 of the Lisp FAQ.

If you think of questions that are appropriate for this FAQ, or would
like to improve an answer, please send email to us at [email protected].

Topics Covered (Part 7):

 [7-1] How can I use the X Window System or other GUIs from Lisp?
 [7-2] What Graphers/Browsers are available?

Search for \[#\] to get to question number # quickly.

----------------------------------------------------------------
Subject: [7-1] How can I use the X Window System or other GUIs from Lisp?

There are several GUI's and Lisp interfaces to the X Window System. Mailing
lists for these systems are listed in the answer to question [4-7].
Various vendors also offer their own interface-building packages.

  CLX provides basic Common Lisp/X functionality. It is a de facto standard
  low-level interface to X, providing equivalent functionality to XLib, but
  in Lisp. It is also a good source for comparing the foreign function calls
  in various Lisps. Does *not* depend on CLOS.  Available free as part of the
  X release in the contrib directory.  Also available by anonymous ftp from
  ftp.x.org:/R5contrib/ as the files CLX.Manual.tar.Z and CLX.R5.02.tar.Z.
  [Note: The new version of CLX for X11R6 can be found (untarred) in
     ftp.x.org:/pub/R6.1/contrib/lib/CLX/
  with documentation in
     ftp.x.org:/pub/R6.1/contrib/doc/CLX/
  and includes some slight modifications for CLtL2 compatability. You
  can get it in tarred form from the CMU AI Repository, Lisp section.]
  Primary Interface Author: Robert W. Scheifler <[email protected]>
  Send bug reports to [email protected].
  The 232 page manual is available in /pub/R5untarred/mit/hardcopy/CLX
  (PostScript format) and /pub/R5untarred/mit/doc/CLX (Interleaf source).

  CLIM (Common Lisp Interface Manager) is a portable, graphical user
  interface toolkit originally developed by International Lisp
  Associates, Symbolics, and Xerox PARC, and now under joint development
  by several Lisp vendors, including Symbolics, Franz, Lucid, Illudium,
  and Harlequin.  It is intended to be a portable successor of Symbolics
  UIMS (Dynamic Windows, Presentations Types).  CLIM 2.0 also supports
  more traditional toolkit-style programming.  It runs on Symbolics Lisp
  Machines; Allegro, Lucid, and Harlequin on several Unix platforms;
  Symbolics CLOE on 386/486 IBM PCs running Windows; and MCL on Apple
  Macintoshes.  It is *not* free, and with the exception of
  Macintoshes, if it is available it can be purchased from the vendor
  of the Lisp system you are using.  For the Macintosh version write
  to Illudium:
    Contact: Dennis Doughty - [email protected]
    or contact: Bill York - [email protected]
  Illidium has signed a distribution agreement for MCL CLIM with
  Lucid. [Contact Harlequin for information about Lucid.]
  CLIM includes a general purpose grapher. The CLIM 2.0 SPECIFICATION
  is available by anonymous ftp from ftp.franz.com:/pub/clim/clim.ps.Z.
  To be added to the mailing list send mail to [email protected].

  CLUE (Common Lisp User-Interface Environment) is from TI, and extends CLX
  to provide a simple, object-oriented toolkit (like Xt) library that uses
  CLOS. Provides basic window classes, some stream I/O facilities, and a few
  other utilities. Still pretty low level (it's a toolkit, not widget
  library).  Available free by anonymous ftp from csc.ti.com:/pub/clue.tar.Z
  Written by Kerry Kimbrough. Send bug reports to [email protected].

  CLIO (Common Lisp Interactive Objects) is a GUI from the people who created
  CLUE. It provides a set of CLOS classes that represent the standard
  components of an object-oriented user interface -- such as text, menus,
  buttons, scroller, and dialogs.  It is included as part of the CLUE
  distribution, along with some packages that use it, both sample and real.

  Allegro Common Windows provides a front end to CLX. Uses CLOS.
  It is *not* free. Contact [email protected] for more information.
  [Intellicorp's KEE4.0 comes with Common Windows also. They've
   implemented the CW spec to run on Lucid 4.0 on Sparcs, HP300/400s,
   HP700/800s, and IBM RS6000s. Contact [email protected] for more
   information.]

  The LispWorks Toolkit is an extensible CLOS-based widget set that uses
  CLX and CLUE. The LispWorks programming environment has been written
  using the toolkit and includes: an Emacs-like editor, listener,
  debugger, profiler, and operating system shell; browsers/graphers for
  classes, generic functions, processes, windows, files, compilation
  errors, source code systems, and setting LispWorks parameters; and an
  interactive interface builder and complete online hypertext
  documentation. Contact: [email protected]

  CLM (Common Lisp Motif) and GINA (Generic Interactive Application) and
  IB (Interface Builder). CLM runs Motif widgets in a separate C
  process, with minimal work on the Lisp side and communicates between C
  and Lisp using TCP sockets. Runs in Allegro CL, Sun CL, CMU CL, Lucid
  CL, and Symbolics Genera. GINA uses CLOS.  Available free in the X
  contrib directory or by anonymous ftp from either
     ftp.x.org:/contrib (formerly export.lcs.mit.edu) or
     ftp.gmd.de:/gmd/gina [129.26.8.84]
  as the files CLM+GINA.README, CLM2.2.tar.Z and GINA2.2.tar.Z.  CLM was
  written by Andreas Baecker <[email protected]>, GINA by Mike Spenke
  <[email protected]>, and IB by Thomas Berlage <[email protected]>.
  Contact Mike Spenke for more info. To be added to the mailing list,
  send a message to [email protected].

  EW (Express Windows) is intended to mimic Symbolics' Dynamic Windows user
  and programmer interfaces. It is available free in the Common Lisp
  Repository as
     ftp.cs.cmu.edu:/user/ai/lang/lisp/gui/ew/
  It is no longer under active development. Runs on Sun/Lucid, Franz
  Allegro, and Symbolics. Should port easily to other Lisps with CLX.
  Written by Andrew L. Ressler <[email protected]>.

  Garnet is a large and flexible GUI. Lots of high-level features.  Does
  *not* depend on CLOS, but does depend on CLX. Garnet (version 2.0 and
  after) is now in the public domain, and has no licensing restrictions,
  so it is available to all foreign sites and for commercial uses.
  Detailed instructions for obtaining it by anonymous ftp are available
  by anonymous ftp as
     a.gp.cs.cmu.edu:/usr/garnet/garnet/README [128.2.242.7]
  Garnet includes the Lapidiary interactive design tool, C32 constraint
  editor, spreadsheet object, Gilt Interface Builder, automatic display
  management, two widget sets (Motif look-and-feel and Garnet
  look-and-feel), support for gesture recognition, and automatic
  constraint maintenance, application data layout and PostScript
  generation. Runs in virtually any Common Lisp environment, including
  Allegro, Lucid, CMU, and Harlequin Common Lisps on Sun, DEC, HP,
  Apollo, IBM 6000, and many other machines.  Garnet helps implement
  highly-interactive, graphical, direct manipulation programs for X/11
  in Common Lisp.  Typical applications include: drawing programs
  similar to Macintosh MacDraw, user interfaces for expert systems and
  other AI applications, box and arrow diagram editors, graphical
  programming languages, game user interfaces, simulation and process
  monitoring programs, user interface construction tools, CAD/CAM
  programs, etc. Contact Brad Myers ([email protected]) for more
  information. Bug reports should be sent to [email protected].
  Administrative questions should be sent to [email protected] or
  [email protected]. Garnet is discussed on the newsgroup
  comp.windows.garnet (which is gatewayed to [email protected] for
  those without access to netnews).

  LISP2WISH is a very simple demonstration of how to connect and
  communicate SYNCHRONOUSLY between a lisp process and a C process
  running a Tcl/Tk executable.  The demo uses the vanilla 'wish'
  executable that is included with the Tcl/Tk distribution.  Tcl/Tk is a
  very flexible system for building Graphical User Interfaces (GUIs),
  with the look-and-feel of Motif.  One writes scripts in a high-level,
  C-like language, and an interpreter evaluates the commands and passes
  execution either to a built-in function (and there are many), or to
  your own C routines.  Tcl/Tk is becoming increasingly popular because
  of its ease of use, and because it is freely distributable (even
  commercially, I believe).  For more information on Tcl/Tk, look on the
  USENET newsgroup comp.lang.tcl, or get the distribution from the
  archive (listed below) or ftp.cs.berkeley.edu.  The Tcl/Tk archive
  also has many user-contributed extensions which make Tcl/Tk even more
  desirable.  Tcl/Tk was originally written by Dr. John Ousterhout, at
  Berkeley.  LISP2WISH lets you make a window/menu/drawing interface for
  your lisp routines, where you can take advantage of all the stuff
  written for Tcl/Tk (and build your own!).
  LISP2WISH has only been tested under X-Windows and Lucid Common Lisp
  4.0 and 4.1, but should work on other platforms that support Lucid
  (or Allegro) and Tcl/Tk.  LISP2WISH is available at the Tcl/Tk archive
     harbor.ecn.purdue.edu:/pub/tcl/lisp2wish6.tar.gz,
  from the author through the WWW at the URL
     http://www.cis.upenn.edu/~kaye/home.html
  by anonymous ftp from
     ftp.cis.upenn.edu:/pub/kaye/lisp2wish6.tar.Z
  or in the GUI section of the Lisp Repository as
     ftp.cs.cmu.edu:/user/ai/lang/lisp/gui/lsp2wish/lsp2wish.tgz
  For more information, contact Jonathan Kaye <[email protected]>.

  LispView is a GUI written at Sun that does not use CLX.  Instead it
  converts Xlib.h directly into Lucid foreign function calls. It is intended
  to be fast and tight. Uses CLOS.  Available for anonymous ftp from
     ftp.x.org:/contrib/lispview1.1 (formerly export.lcs.mit.edu) and
     xview.ucdavis.edu:/pub/XView/LispView1.1
  Includes a general-purpose 2D grapher library.
  Written by Hans Muller ([email protected]). Runs in Sun CL and Lucid CL.
  Direct questions about the source provision to [email protected].

  WINTERP (Widget INTERPreter) is an application development environment
  developed at HP. It enables the rapid prototyping of graphical
  user-interfaces through direct manipulation of user interface objects
  and their attached actions.  WINTERP provides an interface to the X11
  toolkit (Xt) and the OSF/Motif widget set and a built-in RPC mechanism
  for inter-application communication.  It includes an object-oriented
  2.5D graphics and animation widget based on the Xtango path transition
  animation system, the XmGraph graph browser (with graph nodes as
  arbitrary WINTERP widgets), and GIF image support.  The interpreter is
  based on David Betz's XLISP interpreter, which implements a small
  subset of Common Lisp and runs on PCs, IBM RS/6000, Decstation 3100s,
  HP9000s, Sun3, Sparcs, SGI, and NeXT.  XLISP provides a simple
  Smalltalk-like object system, with OSF/Motif widgets as real XLISP
  objects -- they can be specialized via subclassing, methods added
  or altered, etc. WINTERP includes an interface to GNU-Emacs which
  allows code to be developed and tested without leaving the editor.
  WINTERP is a free-standing Lisp-based tool for setting up window
  applications. WINTERP is available free in X contrib directory, or
  by anonymous ftp from
     ftp.x.org:/contrib/devel_tools/
  as winterp-???.tar.gz (formerly export.lcs.mit.edu) where ??? is the
  version number. The current version is 2.03 (X11r6 support).  If you
  do not have Internet access you may request the source code to be
  mailed to you by sending a message to [email protected].
  The WWW home page for WINTERP is accessible via the URL
      http://www.eit.com/software/winterp/winterp.html
  or mirrored on
      file://ftp.x.org/contrib/devel_tools/winterp.html
  Contact Niels Mayer <[email protected]> for more information. To be
  added to the mailing list, send mail to [email protected].

  Xgcl provides an interface to X Windows for GCL (GNU Common Lisp),
  formerly Austin Kyoto Common Lisp (AKCL). It includes a low-level
  interface to the Xlib routines, and an interface that provides
  graphics, menus, and mouse interaction via functions that are called
  from Lisp. Xgcl is built on top of GCL, and it is somewhat larger
  (e.g. 6.7 MB for Xgcl vs. 4.9 MB for GCL) because it incorporates
  Xlib.  To make Xgcl, you must first obtain and make GCL.  The code
  was written by Gordon Novak, Hiep Nguyen, and William Schelter. Xgcl
  is available by anonymous FTP from
      math.utexas.edu:/pub/gcl/
      ftp.cli.com:/pub/gcl/
      ftp.cs.utexas.edu:/pub/novak/xgcl/
  and on the Web from
      http://www.cs.utexas.edu/users/novak
  as the file xgcl-2.tgz. To use, put the xgcl-2.tgz file in the same
  directory as gcl-1.1.tgz and uncompress it with
      gzip -dc xgcl-2.tgz | tar xvf -
  Then see the README in the directory xgcl-2. For more information,
  write to Gordon Shaw Novak, Jr. <[email protected]>.

  YYonX is a port of the YY system to X windows. Runs in Lucid CL, Allegro
  CL, and Symbolics Genera. Supports kanjii.  Developed at Aoyama Gakuin
  University. Available free by anonymous ftp from
     ftp.csrl.aoyama.ac.jp:/YY/
  Written by Masayuki Ida <[email protected]>

  Picasso is a CLOS based GUI, and is available from
     postgres.berkeley.edu:/pub/Picasso-2.0
     toe.cs.berkeley.edu:/pub/picasso/
  It runs on DecStation 3100s, Sun3 (SunOs), Sun4 (Sparc), and Sequent
  Symmetry in Allegro CL. The file pub/xcl.tar.Z contains X-Common Lisp
  interface routines. Send mail to [email protected] for
  more information. [Picasso is no longer an actively supported system.]

  XIT (X User Interface Toolkit) is an object-oriented user interface
  development environment for the X Window System based on Common Lisp,
  CLOS, CLX, and CLUE.  It has been developed by the Research Group
  DRUID at the Department of Computer Science of the University of
  Stuttgart ([email protected]) as a framework for
  Common Lisp/CLOS applications with graphical user interfaces for the X
  Window System.  XIT contains user interface toolkits, including
  general building blocks and mechanisms for building arbitrary user
  interface elements and a set of predefined common elements (widgets),
  as well as high-level interactive tools for constructing, inspecting,
  and modifying user interfaces by means of direct manipulation.
  Although the system kernel is quite stable, XIT is still under active
  development.  XIT can be obtained free by anonymous ftp from
  ftp.informatik.uni-stuttgart.de:/pub/xit/ [129.69.211.2]

----------------------------------------------------------------
Subject: [7-2] What Graphers/Browsers are available?

Most of the graphics toolkits listed above include graphers. In
particular, CLIM, LispWorks, Garnet, and Lispview all include
graphers. The ISI grapher used to be in fairly widely used, but the
CLIM grapher seems to be overtaking it in popularity.

A simple grapher like the one described in "Lisp Lore" by Bromeley and
Lamson is available by anonymous ftp from
  ftp.csrl.aoyama.ac.jp:/graphers/
as the file graphers.tar.Z.uu. It includes versions for CLX, Express
Windows, NCW, CLUE, CLM/GINA, Common Windows, LispView, Winterp, CLIM
and YY. Several implementations have a mouse sensitivity feature and
others have implementation-specific features.  A copy has been made
available from the Lisp Utilities Repository. For further information,
contact Masayuki Ida <[email protected]>.

Grasper-CL is a system for viewing and manipulating graph-structured
information. Grasper-CL includes procedures for graph construction,
modification, and queries as well as a menu-driven, interactive,
layout and drawing package (implemented using CLIM) that allows graphs
to be constructed, modified, and viewed through direct pictorial
manipulation. Grasper-CL nodes include simple geometric figures, such
as circles, rectangles, and diamonds, as well as user-defined icons.
Grasper-CL links include piecewise linear and arbitrarily curved
arrows between nodes.  User-definable actions can be associated with
every graphical object.  The Grasper-CL system consists of several
different components: a core procedure library for programmatically
manipulating the graph abstract datatype, a graph-display module for
producing drawings of graphs, a graph editor that allows users to
interactively draw and edit arbitrary graphs, and a suite of automatic
graph-layout algorithms. Grasper-CL is available under license from
SRI; contact [email protected] for licensing information.  For
additional technical information see
  P. D. Karp, J. D. Lowrance, T. M. Strat, and D. E. Wilkins, "The
  Grasper-CL Graph Management System", LISP and Symbolic Computation: An
  International Journal, Kluwer Academic Publishers, 7:251-290, 1994.
and the Grasper-CL home page,
  http://www.ai.sri.com/~grasper/

----------------------------------------------------------------
;;; *EOF*