lemna

Crates.iolemna
lib.rslemna
version0.4.0
sourcesrc
created_at2023-03-26 23:22:07.24574
updated_at2023-07-04 05:38:31.962064
descriptionA Reactive UI framework for Rust
homepage
repositoryhttps://github.com/AlexCharlton/lemna
max_upload_size
id821559
size2,446,749
Alex Charlton (AlexCharlton)

documentation

https://docs.rs/lemna

README

lemna

Crates.io Docs.rs

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 container
    • Button, a button that supports tool tips
    • RadioButtons, arrays of selectable buttons
    • Toggle, a simple state-toggling button
    • Text, some text
    • TextBox, a box for entering text
    • Canvas, for displaying raster images, including drawing to a blank canvas
    • Selection, a dropdown menu
    • RoundedRect, 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

Commit count: 142

cargo fmt