It should work in any lisp that supports CFFI.
It can be downloaded from https://gitlab.common-lisp.net/gtk-cffi/gtk-cffi
Requirements
Design
The main goal of development is maximum freedom for a user of the library.
For example, you may use as a signal handler: a lisp function; a symbol, corresponding to a lisp-function; a foreign-pointer to a C function; a string that is the name of a C function; a keyword, corresponding to the name of C function. Simply write (setf (gsignal widget :destroy) handler :data data). Data placeholder can contain any lisp object, you want to pass to the handler.
GTK interface is mapped like this (similar to CLOS slots):
GTK | Lisp |
gtk_widget_set_parent | (setf (parent widget) new-parent) |
gtk_widget_get_parent | (parent widget) |
Properties are accessed through (property widget :property-name) or, if you need several at once, (property widget :property-name1 :property-name2). Of course, they are setfable.
GTK binding