7 unstable releases (3 breaking)
0.4.0 | Jul 4, 2023 |
---|---|
0.3.1 | Jun 4, 2023 |
0.2.1 | Apr 8, 2023 |
0.1.1 | Mar 26, 2023 |
#898 in GUI
Used in 2 crates
535KB
13K
SLoC
lemna
A Reactive UI framework for Rust
Features:
- React-esque stateful UI
- Flexbox-like layout engine
- Global styling
- Configurable rendering targets (currently just wgpu, which offers cross-platform GPU-accelerated rendering)
- Configurable windowing backends (baseview, winit, wx-rs)
- Cross-platform
- Components can be built using a combination of other components and graphical primitives that map well to GPU renderers.
- State and render-state is cached, so state changes only trigger recompute of the relevant nodes
- Built in components/widgets:
Div
, a scrollable containerButton
, a button that supports tool tipsRadioButtons
, arrays of selectable buttonsToggle
, a simple state-toggling buttonText
, some textTextBox
, a box for entering textCanvas
, for displaying raster images, including drawing to a blank canvasSelection
, a dropdown menuRoundedRect
, a stylable-rectangle
- OpenIconic icons built-in
- wgpu rendering backend batches primitives together to use few calls out to wgpu (which makes it a lot faster than things that don't do this!)
- nih-plug support in the lemna-nih-plug package
What's missing:
- More robust and more widgets (e.g. text selection support on
Text
widget)
Running
Select your preferred windowing backend:
cargo run -p lemna-baseview --example hello
cargo run -p lemna-wx-rs --example hello
cargo run -p lemna-winit --example scroll
See ./backends/**/**examples
for other examples. Note that wx-rs presently has compilation limitations on most platforms, and winit does not handle many events. The Baseview backend is not on cargo (because baseview itself is not) but it is the most functional.
Practical Examples
Dependencies
~16–54MB
~848K SLoC