plasmo

Crates.ioplasmo
lib.rsplasmo
version0.5.0-alpha.0
sourcesrc
created_at2023-08-01 01:41:28.250478
updated_at2024-02-23 00:49:09.749678
descriptionTUI-based renderer for Dioxus
homepagehttps://dioxuslabs.com
repositoryhttps://github.com/DioxusLabs/dioxus/
max_upload_size
id931397
size377,442
Jonathan Kelley (jkelleyrtp)

documentation

README

Plasmo

A beautiful terminal user interfaces library in Rust.

Crates.io version Download docs.rs docs CI status Discord Link

Leverage CSS, HTML, and Rust to build beautiful, portable, terminal user interfaces. Plasmo is the cross-framework library that powers Dioxus-TUI

demo app

Background

You can use Html-like semantics with inline styles, tree hierarchy, components, and more in your text-based user interface (TUI) application.

Plasmo is essentially a port of Ink but for Rust. Plasmo doesn't depend on Node.js or any other JavaScript runtime, so your binaries are portable and beautiful.

Limitations

  • Subset of Html Terminals can only render a subset of HTML. We support as much as we can.
  • Particular frontend design Terminals and browsers are and look different. Therefore, the same design might not be the best to cover both renderers.

Status

WARNING: Plasmo is currently under construction!

Rendering a Dom works fine, but the ecosystem of widgets is not ready yet. Additionally, some bugs in the flexbox implementation might be quirky at times.

Features

Plasmo features:

  • Flexbox-based layout system
  • CSS selectors
  • inline CSS support
  • Built-in focusing system
  • Widgets
  • Support for events, hooks, and callbacks1
  • Html tags2

1 Basic keyboard, mouse, and focus events are implemented. 2 Currently, most HTML tags don't translate into any meaning inside of Plasmo. So an input element won't mean anything nor does it have any additional functionality.

Commit count: 5571

cargo fmt