Mostly functional, complete (c. 1990) gui toolkit
Garnet is a Graphical User Interface Toolkit
It has a long storied history and has been dormant (exept for minor bug fixes to track the latest releases of various Lisps) for many years. An overview of it’s history can be found on Cliki
Yet it is a mostly functional and suprisingly complete graphical user interface toolkit, and it remains one of only a few pure CL GUI Toolkits fully open source.
Currently the project is going through a massive code cleanup. Practically all feature specifications are out of date by decades, so I’m targetting a minimal, modern, convenient platform: Ubuntu 16.04/SBCL 1.3.1.debian and Ubuntu 16.04/CCL1.11.5. Other somewhat modern versions of Ubuntu and SBCL CCL are likely to work. Other GNU/Linux distributions are also likely to work. Mac and Windows probably won’t. If a lisp has a working modern CLX, there’s a good chance that it will run. Support for other OSs is definitely envisioned. You may also need additional xfont libraries loaded, e.g. you’re using Ubuntu
apt-get install xfonts-100dpi
The easiest way to install and run the demo apps is:
- Make sure you have Quicklisp installed.
- Clone the Garnet repo to a convenient location:
git clone https://github.com/earl-ducaine/cl-garnet ~/garnet
- Make sure your Lisp isn’t running, then create a symbolic link
in Quicklisp’s local-projects folder and delete Quicklisp’s
system index. (to force it to re-search directories)
cd ~/quicklisp/local-projects ln -s ~/garnet . rm ~/quicklisp/local-projects/system-index.txt
- You should now be able to load the repo and all its dependancies
via Quicklisp, and run the demo or begin using the library.
(ql:quickload :org.xoanonos.gui.garnet) (demos-controller::do-go)
Note that ASDF integration is not quite working flawlessly. So, you’ll find it difficult to reload the library more than once into a single lisp session. Also, sometimes it’s necessary to delete your ASDF cache. Something like the following:
rm -rf ~/.cache/common-lisp
Or one of the sub folders. But I like rebuilding everything from time to time.
CCL and CLX
CCL is particular about which version of CLX it runs. The easiest way to ensure CLX compatibility is to download the complient version from the CCL Website and install it someplace that ASDF knows about, for example
mkdir ~/ccl-clx cd ~/ccl-clx wget ftp://clozure.com/pub/CLX/clx-060601.tar.gz tar xf clx-060601.tar.gz echo '(push #p"/home/stallman/ccl-clx/clx_0.7.3-openmcl-060101/" ' \ 'asdf:*central-registry*)' >> ~/.ccl-init.lisp
After that you should be able to set up the Garnet repo for quicklisp in the same way as above.
Garnet’s documentation is extensive, but it was originally written in Scribe. There is currently a scribe c library which converts scribe documents to tex, but it’s not fully integrated yet. So, no updates can be made to the Garnet documentation until that integartion is finished. Still the documentation is quite useful, with good examples and an introductory tutorial. What is out of date is the initial process of loading Garnet, which predates the advent of ASDF.