McCLIM: A GUI toolkit for Common Lisp

https://mcclim.common-lisp.dev/

McCLIM (Mike McDonald’s Common Lisp Interface Manager) is a FOSS implementation of the CLIM II specification. CLIM descends from Genera’s Dynamic Windows, a graphical interface used on Lisp Machines.

It is more a building clay than a graphical toolkit as it implements interfaces on different abstraction levels[1]. The project started in 1998 and had a few breaks in development, it is still actively improved.

[1] [TurtleWare](A tale of two abstractions)

2 Likes

What devices/OS/GUI platforms are supported by McCLIM? It works on my machine, so X-Windows is one answer. But I can’t find documentation on that topic. In particular, are there any plans to make McCLIM work on mobile devices?

Thanks for asking! Currently it can produce output targeting: X11, raster images (png, jpg, …), SVG, PDF and PostScript. I’m often using it to produce graphics.

  • As you have guessed, X11 is the primary interactive platform at the moment. Since X11 can run on Unices, OSX and Windows, it is an acceptable default for someone motivated.

  • I’m working on SDL2 backend (at first - software renderer, after that something faster) - my guess is that it should be ready for inclusion in a few months. Either way SDL2 will cover most popular platforms.

  • Another (perhaps goofy) target I’m working on is the terminal[1], but it is experimental. The primary goal is to stress test assumptions about the device granularity.

  • There’s a person who works on Wayland backend but I don’t have any estimates for that. They have basic I/O working.

Regarding mobile support – perhaps after SDL2 backend is complete we will be able to tackle this topic. From mobile-related things I have plans to add touch gestures (currently these are treated as a pointer gestures). I’ve also recently ported ECL to Emscripten, so perhaps SDL2 backend running in the browser is not that of a stretch.

[1] https://functional.cafe/system/media_attachments/files/111/862/460/605/882/360/original/c7874f7079898801.mp4

Thanks for all those details!

SDL2 sounds promising indeed, and since it’s supported on Android, it’s a step towards mobile.

ECL + Emscripten sounds promising as well, though it’s a bit too much infrastructure for my minimalist taste.

1 Like