- Common Lisp 99.4%
- C++ 0.4%
- C 0.2%
|
|
||
|---|---|---|
| examples | Replaced c bindings with sbcl native functions for termios | |
| src | button-panel: inherit parent background when changing parent | |
| .gitignore | Updated .gitignore file | |
| LICENSE.txt | Updated readme and added license | |
| lw.bat | Added win32 stuff | |
| lw.sh | Fixed unicode input; last character in edit was not returned | |
| README.md | Restructured readme | |
| tmode.asd | Fix the situations when the application doesn't have any windows accepting focus, | |
TMode
Introduction
TMode is a library for creating text-mode user interfaces in Common Lisp. This is very much WIP project, so do not use it for anything serious unless you are ready to debug it.
It supports output to CAPI windows and ansi-compatible terminals (i.e. xterm, konsole etc).
The goal is to easily create simple interfaces for console applications in Common Lisp, which might still require some basic components like listboxes, text views, checkboxes, buttons, radiobuttons, etc as well as some basic layouts and a sane input model.
Screenshots
screenshot1 screenshot2 screenshot2 screenshot2
Requirements
Supported compilers: SBCL and Lispworks. By design it is a zero-dependency library, no ncurses, cffi or anything required. Just drag'n'drop it as a dependency to a project and ready to go. Tested terminals: urxvt, Konsole, Gnome Terminal. This is what I mostly use, so I've targeted them.
Supported features
- Ansi terminal output, 3-bit, 8-bit, 24-bit colors
- Key input including special keys like F1-F12(not all ctrl/alt combos are supported, due to ancient unix terminal input system and my laziness)
- Windows, including decorated (with border and title) and child windows
- Hiding/showing windows, enabling/disabling
- Panels:
- checkbox-button-panel
- radio-button-panel
- push-button-panel
- Scrollable text window
- Simple BBCode-based markup language for text windows
- Listboxes
- Tables with headers and rows, with possibility to select cells or rows
- Focus transition by tab or up/down arrows(for panels)
- Text input fields (edit)
- Layouts: row-layout and column-layout, including layouts nesting
- Dialogs: windows with buttons and layout
- Accelerator keys for buttons (parsed from "&" character in a name)
- Top menu with submenus
Examples
Take a look at files in examples directory.
LLM statement
- This is a strictly personal no-LLM project; no LLMs were involved in the process, and I prefer to keep it that way. Since I cannot guarantee that the contributors' code is free from LLM involvement, no contributions are accepted, unless I know the contributer and he shares the same views on a project.
- Neither is accepted to train LLM on the code of the project.
TODO
- Robust key handling
- Correct window resize handling
- Windows console backend
- More components