A Common Lisp interface to libcurses providing both low-level CFFI bindings and a higher-level Lisp-friendly API.
cl-charms is a Common Lisp library that provides foreign function bindings to libcurses (ncurses), enabling developers to create terminal-based user interfaces (TUIs) in Lisp. It solves the problem of accessing low-level curses functionality from Common Lisp by offering both raw CFFI bindings and a higher-level, more idiomatic Lisp API.
Common Lisp developers who need to build terminal applications, interactive command-line tools, or text-based games that require advanced terminal control like cursor movement, window management, and input handling.
Developers choose cl-charms because it's a modern, maintained successor to cl-ncurses with better portability via CFFI, dual-level API flexibility, and compatibility across multiple Lisp implementations and operating systems—including Windows through PDCurses.
More up-to-date version of cl-charms. Forked it because it was, apparently, abandoned by author and I couldn't contact him.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses CFFI instead of UFFI for foreign function calls, improving portability across Common Lisp implementations like SBCL, CCL, and LispWorks, as noted in the README.
Offers both low-level raw bindings for compatibility with cl-ncurses code and a higher-level Lisp interface for easier TUI development, providing flexibility for different use cases.
Tested on multiple operating systems including Linux, macOS, and Windows via PDCurses, making it suitable for cross-platform terminal applications.
Easily installable via Quicklisp, Common Lisp's package manager, streamlining dependency management and setup for developers.
The README explicitly states that colors are not supported on Windows and features like bold might not work correctly, limiting its usability for rich TUIs on that platform.
The high-level interface is labeled as 'alpha' quality, indicating it's unstable and not ready for production use, which could lead to breaking changes or bugs.
The Bugs and Contributing section lists 'Finally write documentation' as a major area of work, suggesting current documentation is sparse and may hinder learning.
Running cl-charms from SLIME in Emacs requires a multi-step workaround involving terminal processes, which adds friction to the development workflow.