3 unstable releases

0.5.0-alpha.0 Feb 23, 2024
0.4.3 Dec 7, 2023
0.4.0 Aug 1, 2023

#1153 in GUI

Download history 12/week @ 2023-12-30 11/week @ 2024-01-06 34/week @ 2024-01-13 8/week @ 2024-01-20 2/week @ 2024-01-27 13/week @ 2024-02-03 20/week @ 2024-02-10 116/week @ 2024-02-17 194/week @ 2024-02-24 44/week @ 2024-03-02 44/week @ 2024-03-09 15/week @ 2024-03-16 3/week @ 2024-03-23 67/week @ 2024-03-30 8/week @ 2024-04-06

79 downloads per month
Used in dioxus-tui

MIT/Apache

760KB
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

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.

Dependencies

~22–33MB
~437K SLoC