Limoni: A zero-allocation, 60+ FPS TUI library for Go with 3D mesh rendering, Kitty/Sixel graphics & TEA runtime
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 , andPLY loader, 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[?2026h synchronized 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 (0)
Comments
No comments yet. Start the discussion.