What is the most pleasant way to write a portable GUI in CL?

This page summarizes the projects mentioned and recommended in the original post on /r/lisp

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • abcl-jazz

    Example on how to use Java Swing from ABCL (Armed Bear Common Lisp)

  • iup

    Common Lisp CFFI bindings to the IUP Portable User Interface library (pre-ALPHA)

  • I think the IUP bindings are really worth a try: https://github.com/lispnik/iup/ Overview of it (and others): https://lispcookbook.github.io/cl-cookbook/gui.html I quickly tried it and it worked as expected. The only difficulty is to learn the framework: how to assemble the GUI parts (where to put the scrollbar?) and this sort of things. Given the author it should be pretty much dynamic (as much as Ltk) but might not be there yet. It will, given more users and demand.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • cljfx

    Declarative, functional and extensible wrapper of JavaFX inspired by better parts of react and re-frame

  • Interesting. All of my experience there was repl-based (e.g. with seesaw for swing or my own library). I didn't have to AOT compile anything until finally deploying stuff at the end, and repl-based development worked very well. Manipulating swing widgets and forms is fine if you do it via edt (typically behind a macro) and even then, you can typically just mess with them from the repl and most look-and-feels won't complain about non-edt access). There is now cljfx which is similarly cross platform except via javafx, as well as the approach of writing stuff in cljs and just rendering in a javafx webview (cross platform, as well as browser friendly).

  • seesaw

    Seesaw turns the Horror of Swing into a friendly, well-documented, Clojure library

  • [2] https://github.com/clj-commons/seesaw

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts