Hey everyone! 👋
I've been building Limoni, a Terminal User Interface (TUI) engine for Go written from scratch with a strong focus on rendering throughput, zero allocations on the hot draw path, and rich visual capabilities.
Here is a quick breakdown of what it brings to the table out of the box:
🚀 Key Features
-
3D Graphics Engine: Wavefront
OBJ,STL, andPLYloader, Lambertian & Gouraud depth-buffer shaders, and texture mapping rendered directly in your terminal using 2x4 Braille subpixels. - Hardware Image Drivers: Native support for Kitty Graphics Protocol, Sixel, and iTerm2 with automatic ANSI half-block fallback.
- Strict Unicode & Emoji Safety: Table-driven East Asian Width (EAW) calculation and continuation cell tracking — wide emojis (🔴, 🚀) won't corrupt rows or shred borders when dragging modal dialogs.
- The Elm Architecture (TEA): Predictable state updates with concurrent goroutine commands and deterministic event delivery.
-
Zero Heap Allocations on Render: Contiguous 1D memory buffer (
[]cell.Cell) and an ANSI differential engine that emits minimal escape bytes with\x1b[?2026hsynchronized output. -
Simple Single-Import API: Modern fluent builders (
limoni.NewBlock(),limoni.NewTable(),limoni.SplitVertical()) so you don't have to juggle dozens of disjointed subpackages.
🔗 Links & Resources
- 📦 GitHub: github.com/thebanri/limoni
- 🌐 Website: limoni-website.vercel.app
- 📚 Go Reference: pkg.go.dev/github.com/thebanri/limoni
I would love to hear your feedback, thoughts on the API ergonomics, or edge-case terminal bug reports!

Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.