Lemon
A cross-platform UI toolkit for building native graphical applications in Rust.
Lemon aims to give you the ergonomics of a modern widget framework—think along the lines of Iced or GPU-driven toolkits like GPUI—while staying close to a small, composable stack you can understand and extend.
Vision
Desktop UI toolkits usually split into three concerns:
- Windowing & input — connect to the OS event loop, keyboards, pointers, and displays.
- Layout — turn a tree of elements and style rules into positions and sizes.
- Rendering — paint backgrounds, borders, vector shapes, images, and text on the GPU.
Lemon is being built around that model explicitly, rather than hiding it behind a monolithic runtime. The goal is a toolkit that feels native on macOS, Windows, and Linux, scales with Retina/high-DPI displays, and stays fast enough for interactive tools, editors, and utilities—not only static forms.
Stack
| Layer | Crate | Role |
|---|---|---|
| Windowing | winit | Cross-platform windows and events |
| GPU | wgpu | Safe graphics API (Vulkan, Metal, DX12, …) |
| 2D render | Vello | GPU vector rendering (paths, fills, layers) |
| Layout | Taffy | Flexbox & grid (CSS-like layout) |
| Text | Parley | Rich text layout and shaping |
| Async glue | pollster | Block on wgpu initialization on the main thread |
Together, these pieces mirror how many production UI engines work internally: element tree → layout pass → paint pass → present.
Project status
Early exploration. The public API, widget set, and application model are not defined yet.
A small graphics bootstrap (window, Vello scene, Taffy flex layout, Parley text) lives under archive/bootstrap-wgpu-vello-taffy/ for reference. It is not part of the crate and is ignored by rust-analyzer.
Building
Requires a recent stable Rust toolchain and a GPU with compute shader support (for Vello).
License
Not specified yet.