Common Lisp bindings for the Tk GUI toolkit https://www.autistici.org/interzona/nodgui.html
Find a file
cage 80cf3ea3e8 - increased version number;
- updated Changelog and NEWS files.
2025-04-02 14:08:38 +02:00
game - fixed creash in game (entity:event-after slot declared function but assumed value 'nil' somtimes); 2025-02-15 13:01:07 +01:00
src - wrapped message-box's body with 'with-read-data' macro, to prevent race conditions. 2025-04-02 14:04:50 +02:00
test - allowed a maximum size for non blocking queue. 2023-12-14 14:29:26 +01:00
themes - added theme 'forest light'. 2023-11-19 13:34:14 +01:00
.gitignore - added file '.gitignore'. 2023-08-20 14:05:37 +02:00
Changelog - increased version number; 2025-04-02 14:08:38 +02:00
LICENSES.org - added game; 2024-08-23 15:24:03 +02:00
NEWS.org - increased version number; 2025-04-02 14:08:38 +02:00
nodgui-lite.asd - increased version number; 2024-09-27 13:50:04 +02:00
nodgui.asd - increased version number; 2025-04-02 14:08:38 +02:00
README.org - fixed README. 2024-09-25 15:16:09 +02:00
TODO.org - updated changelog and TODO. 2018-12-12 15:40:30 +01:00

NODGUI

NODGUI

"No Drama GUI"

Common Lisp bindings for the Tk GUI toolkit.

important note:

Version 0.4.0 broke the user API, see here for more information about how your code is affected and how to fix it.

Features

  • custom themes
  • more widgets:

    • history-entry
    • autocomplete
    • expanded "text" widget
    • date picker
    • treelist
    • tooltip
    • searchable listbox
    • password entry
    • openGL frame
  • tklib-derived widgets:

    • calendar
    • notify-window (a bit buggy, unfortunately)
    • plots and charts: dot-plot, bar-chart…
  • asynchronous main event loop
  • and more

Themes

nodgui supports loading custom ttk themes and ships the "yaru" theme from the ttkthemes collection.

To use a built-in theme other than the "default" one, do:

    (with-nodgui (:theme "yaru")
      (code here))

or use (setf *default-theme* "yaru").

You can see how they look with the demos:

CL-USER> (nodgui.demo:demo :theme "yaru")

You can load any .tcl file describing a theme:

(nodgui:eval-tcl-file "path/to/another/theme.tcl")
(nodgui:use-theme "theme")

See also *themes-directory*.

This currently doesn't work with a few themes using SVG images, but it might be fixed with the release of an upcoming Tcl/Tk version.

Dependency

Programs

Lisp libraries

  • alexandria;
  • bordeaux-threads;
  • cl-colors2;
  • cl-opengl;
  • cl-ppcre-unicode;
  • cl-unicode;
  • sdl2;
  • sdl2-ttf;
  • clunit2;
  • esrap;
  • flexi-streams;
  • jpeg-turbo;
  • named-readtables;
  • parse-number;
  • pngload;
  • zpng.

All of the above libraries are available on quicklisp.

C Libraries

Installing

  1. install the tk interpreter (example on a Debian system follows)

    # apt-get install tk
  2. optionally install tklib

    # apt-get install tklib
  3. optionally install tcllib

    # apt-get install tcllib
  4. optionally install tkimg

    # apt-get install libtk-img
  5. install libsd2

    # apt-get install libsdl2-dev
  6. install opengl

    # apt-get install libg-dev
  7. install libturbojpeg

    # apt-get install libturbojpeg0-dev
  8. open a REPL and type

      (ql:quickload "nodgui")
  9. try it!

      (nodgui.demo:demo)

    also try the minigame, it is fun!

      (asdf:make nodgui/game)
      (main::main)

Documentation

License

This software is Copyright © cage.

Derived from:

  • © Peter Herth;
  • © Thomas F. Burdick;
  • © Cadence Design Systems;
  • © Daniel Herring.

The authors grant you the rights to distribute and use this software as governed by the terms of the Lisp Lesser GNU Public License (http://opensource.franz.com/preamble.html), known as the LLGPL.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

This library uses code from other authors see the file /cage/nodgui/src/branch/master/LICENSES.org for details.

Themes

The themes definitions found in the themes/ subdirectory are distributed with many different license, please carefully check the file LICENSE.org in each theme's subdirectory (e.g /cage/nodgui/src/branch/master/themes/yaru/LICENSE.org) for more information.

Acknowledgment

My (cage) deep thanks to Tim Holliefield <tholliefield [at] online.de>, for all the suggestions and help about implementing the widgets styles management.