A Common Lisp library for building rich, responsive terminal user interfaces (TUIs) using a Model-View-Update architecture.
Tuition is a Common Lisp library for building terminal user interfaces (TUIs) using a Model-View-Update architecture. It provides a structured way to manage application state, handle events via generic methods, and render UIs as pure strings, abstracting away low-level terminal complexities. The library is designed for creating responsive, interactive terminal applications with reusable components and advanced input handling.
Common Lisp developers who want to build interactive terminal applications, such as CLI tools, dashboards, or file managers, with a modern, architecture-driven approach.
Developers choose Tuition for its clean integration of The Elm Architecture with CLOS, offering a familiar pattern for state management in a Lisp-native way. Its built-in components, styling utilities, and robust input handling reduce boilerplate, while features like external program execution and mouse zones enable sophisticated terminal apps without managing low-level terminal details.
A Common Lisp library for building TUIs
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Blends The Elm Architecture with Common Lisp Object System, enabling clear state modeling via CLOS objects and message-driven updates through specialized generic methods, as shown in the Hello World and counter examples.
Includes widgets like spinners, progress bars, lists, tables, and text inputs with their own state management, reducing boilerplate for common TUI elements, as documented in the components section.
Supports keyboard and mouse input with modifiers, batched processing for performance, scroll event coalescing to prevent jumpiness, and zones for stable mouse interaction mapping, detailed in the input and mouse sections.
Allows full TUI suspension to run external programs like editors with proper terminal restoration and callbacks, via `tui:exec-cmd`, enabling seamless shell-outs without breaking the UI.
As a Common Lisp library, it has a smaller user base compared to TUI frameworks in languages like Go or Rust, which can mean fewer third-party extensions, tutorials, and community support.
Relies on external libraries like bordeaux-threads and trivial-channels for concurrency, adding dependencies that might complicate deployment or increase binary size in minimal environments.
The TEA/CLOS architecture, while powerful for state management, introduces overhead that could be overkill for very simple terminal scripts or apps with trivial state, as seen in the basic setup requirements.