3 unstable releases
0.5.0-alpha.0 | Feb 23, 2024 |
---|---|
0.4.3 | Dec 7, 2023 |
0.4.0 | Aug 1, 2023 |
#1436 in GUI
Used in dioxus-tui
775KB
16K
SLoC
Plasmo
A beautiful terminal user interfaces library in Rust.
Leverage CSS, HTML, and Rust to build beautiful, portable, terminal user interfaces. Plasmo is the cross-framework library that powers Dioxus-TUI
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.
Dependencies
~23–33MB
~450K SLoC