Initial commit: cl-tui — Reusable Common Lisp Terminal UI Framework
Layout engine (Yoga FFI), renderables (Box, Text), rendering engine, theme engine, TextInput/Textarea, ScrollBox/TabBar, Select, Markdown/Code/Diff, dialog system, mouse support, plugin/slot system.
This commit is contained in:
52
README.org
Normal file
52
README.org
Normal file
@@ -0,0 +1,52 @@
|
||||
#+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
|
||||
Reference in New Issue
Block a user