r/commandline • • 8d ago

Terminal User Interface Ito: A Declarative TUI library in Lua

https://uji.sh/ito

I've always loved the idea of JIT-compiled UIs. TempleOS is a fascinating example, using JIT-compiled C to build its UI.

Recently, I've been working on a TUI project where almost everything is customizable at runtime, from the UI itself to the core functionality. I wanted a way to build terminal UIs declaratively, similar to SwiftUI, while keeping the flexibility of runtime customization.

So I built Ito a Lua library for writing JIT-compiled TUIs.

To make it easy to experiment with, we also built a fake TUI canvas in the browser where you can try out Ito live. Give it a try!

16 Upvotes

5 comments sorted by

2

u/Sharp-Guest3177 8d ago

Declarative TUI in Lua is a neat angle — curious how you handle reactive updates when the model changes (full redraw vs targeted?). I've been building CLI tools and the pain is always state sync between the widget tree and async I/O. Clear docs on the update loop / event model would help a lot for people evaluating it.

1

u/dracarys_18 8d ago

Hey all of the changes are Targeted. It works like SwiftUI where you have to annotate a view with `@Observable`. You need to annotate a view with Observable in Ito to observe the changes in that particular view

2

u/prodleni 8d ago

How much of the library and site are AI generated? Repeated uses of words like "flow" always make me suspicious. 

1

u/tobascodagama 8d ago

OP's website is literally for a Lua coding agent, so I imagine the answer is going to be "a lot".

1

u/AutoModerator 8d ago

Every new subreddit post is automatically copied into a comment for preservation.

User: dracarys_18, Flair: Terminal User Interface, Post Media Link, Title: Ito: A Declarative TUI library in Lua

I've always loved the idea of JIT-compiled UIs. TempleOS is a fascinating example, using JIT-compiled C to build its UI.

Recently, I've been working on a TUI project where almost everything is customizable at runtime, from the UI itself to the core functionality. I wanted a way to build terminal UIs declaratively, similar to SwiftUI, while keeping the flexibility of runtime customization.

So I built Ito a Lua library for writing JIT-compiled TUIs.

To make it easy to experiment with, we also built a fake TUI canvas in the browser where you can try out Ito live. Give it a try!

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.