SkillAgentSearch skills...

Ltui

🍖 A cross-platform terminal ui library based on Lua

Install / Use

/learn @tboox/Ltui
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <h1>LTUI</h1> <div> <a href="https://github.com/tboox/ltui/actions?query=workflow%3Abuild"> <img src="https://img.shields.io/github/actions/workflow/status/tboox/ltui/main.yml?branch=master&style=flat-square" alt="github-ci" /> </a> <a href="https://github.com/tboox/ltui/releases"> <img src="https://img.shields.io/github/release/tboox/ltui.svg?style=flat-square" alt="Github All Releases" /> </a> <a href="http://luarocks.org/modules/waruqi/ltui"> <img src="https://img.shields.io/luarocks/v/waruqi/ltui.svg?style=flat-square" alt="Luarocks" /> </a> </div> <div> <a href="https://github.com/tboox/ltui/blob/master/LICENSE.md"> <img src="https://img.shields.io/github/license/tboox/ltui.svg?colorB=f48041&style=flat-square" alt="license" /> </a> <a href="https://www.reddit.com/r/tboox/"> <img src="https://img.shields.io/badge/chat-on%20reddit-ff3f34.svg?style=flat-square" alt="Reddit" /> </a> <a href="https://gitter.im/tboox/tboox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"> <img src="https://img.shields.io/gitter/room/tboox/tboox.svg?style=flat-square&colorB=96c312" alt="Gitter" /> </a> <a href="https://t.me/tbooxorg"> <img src="https://img.shields.io/badge/chat-on%20telegram-blue.svg?style=flat-square" alt="Telegram" /> </a> <a href="https://jq.qq.com/?_wv=1027&k=5hpwWFv"> <img src="https://img.shields.io/badge/chat-on%20QQ-ff69b4.svg?style=flat-square" alt="QQ" /> </a> <a href="https://tboox.org/donation/"> <img src="https://img.shields.io/badge/donate-us-orange.svg?style=flat-square" alt="Donate" /> </a> </div> <p>A cross-platform terminal ui library based on Lua</p> </div>

Introduction (中文)

LTUI is a cross-platform terminal ui library based on Lua.

This framework originated from the requirements of graphical menu configuration in 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.

<img src="https://tboox.org/static/img/ltui/choicebox.png" width="70%" />

Installation

$ luarocks install ltui

Build

We need install the cross-platform build utility xmake first.

$ xmake

Run tests

We need install lua or luajit to run tests first.

$ xmake run test dialog
$ xmake run test window
$ xmake run test desktop
$ xmake run test inputdialog
$ xmake run test mconfdialog

Or

$ lua tests/dialog.lua
$ lua tests/window.lua
$ lua tests/desktop.lua
$ lua tests/inputdialog.lua
$ lua tests/mconfdialog.lua

Or

$ luajit tests/dialog.lua
$ luajit tests/window.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 window      = ltui.window
local demo        = application()

function demo:init()
    application.init(self, "demo")
    self:background_set("blue")
    self:insert(window: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 configuration

<img src="https://tboox.org/static/img/ltui/menuconf.png" width="70%" />

Input dialog

<img src="https://tboox.org/static/img/ltui/inputdialog.png" width="70%" />

Text area

<img src="https://tboox.org/static/img/ltui/textarea.png" width="70%" />

Windows

<img src="https://tboox.org/static/img/ltui/windows.png" width="70%" />

Termux

<img src="https://tboox.org/static/img/ltui/termux.jpeg" width="40%" />

If you want to known more, please refer to:

Contacts

Related Skills

View on GitHub
GitHub Stars868
CategoryDevelopment
Updated2d ago
Forks53

Languages

C

Security Score

100/100

Audited on Mar 28, 2026

No findings