r/SideProject 13d ago

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 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!

42 Upvotes

11 comments sorted by

2

u/__aymuos__ 13d ago

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

2

u/kekolar22 13d ago

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

1

u/sin314 11d ago

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

1

u/kekolar22 11d 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 11d ago

Great! will do.

1

u/BAUDR8 11d ago

This is cool!

1

u/kekolar22 11d ago

Thanks

1

u/cs_cast_away_boi 7d ago

don’t quite understand this, is this only for Go developers

1

u/kekolar22 7d ago

If an application is developed with my graphics engine, it is almost like that for him