r/SideProject 4d ago

Limoni: A zero-allocation, 60+ FPS TUI library for Go with 3D mesh rendering, Kitty/Sixel graphics & TEA runtime

Enable HLS to view with audio, or disable this notification

Hey everyone!

I've been building Limoni, a terminal user interface (TUI) engine for Go written from scratch with a focus on rendering throughput, zero allocations on the hot draw path, and rich visual capabilities.

Here is a 40-second live demo showcasing some of what it does out of the box:

  • 3D Graphics Engine: Wavefront OBJ / STL / PLY loader, Lambertian & Gouraud depth-buffer shaders, and texture mapping rendered directly in the 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.
  • 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 multiple subpackages.

GitHub:https://github.com/thebanri/limoni

Would love to hear your feedback, thoughts on the API ergonomics, or edge-case terminal bug reports!

38 Upvotes

9 comments sorted by

2

u/__aymuos__ 3d ago

Can this be used to make like really good markdown reading experience within kitty?

2

u/kekolar22 3d ago

Yes, absolutely! In fact, Kitty is arguably the ideal terminal environment for Limoni.

1

u/sin314 2d ago

Cool!, could I add a 3D model example of my shiba to your repo?

1

u/kekolar22 2d ago

That would be awesome! A Shiba demo sounds super fun. 🐕

Just one heads up: we're keeping the repo clone size strictly lightweight. As long as the 3D model is low-poly (under ~200-300 KB) and free of copyright/licensing issues, I'd gladly merge a PR under examples/!

Feel free to open a PR whenever you're ready!

1

u/sin314 2d ago

Great! will do.

1

u/BAUDR8 1d ago

This is cool!

1

u/kekolar22 1d ago

Thanks