Files
cl-tty/README.org
2026-05-11 11:45:59 +00:00

54 lines
1.7 KiB
Org Mode

#+TITLE: cl-tui — Reusable Common Lisp Terminal UI Framework
#+STARTUP: content
#+FILETAGS: :project:cl-tui:readme:
* cl-tui
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-tui 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-tui application runs remotely — same code, same components,
accessible from anywhere.
** Architecture
```
Application code (any CL project)
└── cl-tui (layout, components, theme, events, dialogs)
└── Yoga (Flexbox layout — C library via FFI)
└── croatoan (ncurses terminal rendering)
```
cl-tui 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