Lisp bindings for the Tk toolkit

Upstream URL


Peter Herth






/"No Drama GUI"/

Common Lisp bindings for the Tk GUI toolkit.

1.1important 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.


  • custom themes
  • more widgets:
    • history-entry
    • autocomplete
    • expanded "text" widget
    • date picker
    • treelist
    • tooltip
    • searchable listbox
    • password entry
  • tklib-derived widgets:
    • calendar
    • notify-window
    • plots and charts: dot-plot, bar-chart…
  • asynchronous main event loop
  • and more


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.



  • TCL/TK interpreter (version >= 8.6)

2.2Lisp libraries

  • alexandria;
  • cl-ppcre-unicode;
  • esrap
  • clunit2;
  • cl-colors2;
  • named-readtables.

All of the above libraries are available on quicklisp.

2.3TCL/TK libraries (optional)

  • TKlib
  • tkimg


  1. install the tk interpreter (example on a Debian system follows)
# apt-get install tk
  1. optionally install tklib
# apt-get install tklib
  1. optionally install tkimg
# apt-get install libtk-img
  1. open a REPL and type
(ql:quickload "nodgui")
  1. try it!


please followthis link for documentation and news.


This software is Copyright (c) 2003-2010 Peter Herth <> Portions Copyright (c) 2005-2010 Thomas F. Burdick Portions Copyright (c) 2006-2010 Cadence Design Systems Portions Copyright (c) 2010 Daniel Herring Portions Copyright © cage

The authors grant you the rights to distribute and use this software as governed by the terms of the Lisp Lesser GNU Public License (, 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.


The themes definitions found in the themes/ subdirectory are distributed with many different license, please carefully check the file in each theme's subdirectory (e.g ./themes/yaru/ for more information.


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

Dependencies (10)

  • alexandria
  • bordeaux-threads
  • cl-colors2
  • cl-jpeg
  • cl-ppcre
  • cl-unicode
  • clunit2
  • esrap
  • named-readtables
  • parse-number

Dependents (2)

  • GitHub
  • Quicklisp