- A cross-platform terminal ui library based on Lua
- Introduction (中文)
- LTUI is a cross-platform terminal ui library based on Lua.
- This framework originated from the requirements of graphical menu configuration in https://github.com/tboox/xmake . Similar to the Linux kernel's menuconf to configure the compilation parameters, so using curses and lua to implement a cross-platform character terminal ui library.
- Refer to kconfig-frontends for style rendering. Of course, users can customize different ui styles.
- Installation
- $ luarocks install ltui
- Build
- We need install the cross-platform build utility https://github.com/tboox/xmake first.
- $ xmake
- Run tests
- We need install https://www.lua.org/ or http://luajit.org/ to run tests first.
- $ xmake run test dialog
- $ xmake run test Windows
- $ xmake run test desktop
- $ xmake run test inputdialog
- $ xmake run test mconfdialog
- Or
- $ lua tests\dialog.lua
- $ lua tests\Windows.lua
- $ lua tests\desktop.lua
- $ lua tests\inputdialog.lua
- $ lua tests\mconfdialog.lua
- Or
- $ luajit tests\dialog.lua
- $ luajit tests\Windows.lua
- $ luajit tests\desktop.lua
- $ luajit tests\inputdialog.lua
- $ luajit tests\mconfdialog.lua
- Examples
- Application
- local ltui = require("ltui")
- local application = ltui.application
- local event = ltui.event
- local rect = ltui.rect
- local Windows = ltui.Windows
- local demo = application()
- function demo:init()
- application.init(self, "demo")
- self:background_set("blue")
- self:insert(Windows:new("window.main", rect {1, 1, self:width() - 1, self:height() - 1}, "main window", true))
- end
- demo:run()
- Label
- local lab = label:new("title", rect {0, 0, 12, 1}, "hello ltui!"):textattr_set("white")
- Button
- local btn = button:new("yes", rect {0, 1, 7, 2}, "<Yes>"):textattr_set("white")
- Input dialog
- function demo:init()
- -- ...
- local dialog_input = inputdialog:new("dialog.input", rect {0, 0, 50, 8})
- dialog_input:text():text_set("please input text:")
- dialog_input:button_add("no", "<No>", function (v) dialog_input:quit() end)
- dialog_input:button_add("yes", "<Yes>", function (v) dialog_input:quit() end)
- self:insert(dialog_input, {centerx = true, centery = true})
- end
- Components
views | dialogs | others |
---|---|---|
view | dialog | event |
panel | boxdialog | action |
label | textdialog | canvas |
button | inputdialog | curses |
border | mconfdialog | program |
window | choicedialog | application |
menubar | point | |
menuconf | rect | |
textedit | object | |
textarea | ||
statusbar | ||
choicebox | ||
desktop |
- Snapshot
- Menu configuation
Input dialog
Text area
- If you want to known more, please refer to:
- HomePage https://tboox.org
- GitHub https://github.com/tboox/ltui
- Gitee https://gitee.com/tboox/ltui
- Contacts
- Email: https://github.com/tboox/mailto:waruqi@gmail.com
- Homepage: https://tboox.org
- Community:/r/tboox on reddit https://www.reddit.com/r/tboox/
- ChatRoom:Char on telegram https://t.me/tbooxorg , Chat on gitter
- Source Code:GitHub https://github.com/tboox/ltui , Gitee https://gitee.com/tboox/ltui
来源: https://juejin.im/entry/5bff32d8f265da614c4c828b