Rename: cl-tty avoids naming collision with Quicklisp's cl-tui (naryl/cl-tui, a cl-charms-based ncurses library). Our project is pure escape-sequence CL. v0.9.0 adds: - Dialog base class: modal overlay with backdrop, centered panel, size variants (:small/:medium/:large), stack-based management - Dialog subclasses: alert, confirm, select-dialog, prompt-dialog - Toast notifications: transient, top-right corner, auto-dismiss, colored variants (info/success/warning/error) - 78 tests total, 100% passing ASDF: read-time package references (+fiveam:+) replaced with find-symbol so .asd loads without FiveAM pre-loaded
54 lines
1.7 KiB
Org Mode
54 lines
1.7 KiB
Org Mode
#+TITLE: cl-tty — Reusable Common Lisp Terminal UI Framework
|
|
#+STARTUP: content
|
|
#+FILETAGS: :project:cl-tty:readme:
|
|
|
|
* cl-tty
|
|
|
|
A reusable Common Lisp framework for building rich terminal user interfaces.
|
|
Built on croatoan (ncurses) with Yoga for Flexbox layout. Provides a component
|
|
tree model with dirty-tracking, incremental rendering, layered keybinding,
|
|
theme engine, and full mouse support — the primitives needed to match the TUI
|
|
quality of Claude Code and OpenCode from Common Lisp.
|
|
|
|
** Why
|
|
|
|
Common Lisp has no reusable terminal UI framework at the level of Python's
|
|
Rich/prompt_toolkit or Go's Bubble Tea. Every CL project that wants a
|
|
terminal UI either builds ncurses from scratch or uses a text-only REPL.
|
|
cl-tty fills that gap — a component library with Flexbox layout, semantic
|
|
theming, layered keybinding, and full mouse support. Build a terminal UI once,
|
|
reuse it everywhere.
|
|
|
|
Terminal UIs also work over SSH. A Qt or browser-based UI requires a local
|
|
display. A cl-tty application runs remotely — same code, same components,
|
|
accessible from anywhere.
|
|
|
|
** Architecture
|
|
|
|
```
|
|
Application code (any CL project)
|
|
└── cl-tty (layout, components, theme, events, dialogs)
|
|
└── Yoga (Flexbox layout — C library via FFI)
|
|
└── croatoan (ncurses terminal rendering)
|
|
```
|
|
|
|
cl-tty depends only on croatoan and Yoga. It is not tied to any application.
|
|
|
|
** Dependencies
|
|
|
|
- Common Lisp (SBCL tested)
|
|
- croatoan — ncurses binding for terminal rendering
|
|
- Yoga — Flexbox layout engine (C library, loaded via CFFI)
|
|
- Quicklisp libraries as needed (ironclad for hashing, bordeaux-threads)
|
|
|
|
** Status
|
|
|
|
v0.1.0 — Layout engine (in progress)
|
|
|
|
See ~docs/ROADMAP.org~ for the full release plan.
|
|
|
|
** License
|
|
|
|
TBD
|
|
# Test
|