2 releases

0.0.2 Dec 31, 2023
0.0.1 Jul 29, 2023

#5 in #makeup


Used in makeup

MIT license

5KB

makeup

Pretty CLI / TUI interfaces.

MSRV 1.67.

READ ME FIRST

makeup is still early-stage!!! Treat it like the alpha project it is.

crates.io

Usage examples

See examples/!

Demos

cargo run --example wave

Setup

Install pre-commit.

pre-commit install
pre-commit autoupdate
cargo install cargo-audit

Features

  • 60fps by default.
  • Input and render are fully decoupled, ie input can NEVER block rendering.
  • Message-passing-like architecture
    • Components are updated and rendered asynchronously.
    • Components must not reference each other directly, but instead communicate via message passing.
    • Component updates are just reading the message queue from the mailbox, and updating the component's state accordingly. makeup assumes that any potentially-blocking task will be moved out of the update/render loop via tokio::spawn or similar, and managed via message-passing.
  • Render-backend-agnostic.
    • Render backends are async.
    • Default backends are memory and UNIX-compatible terminal.
    • Render backends can be implemented for other protocols!
      • Provided to the UI on instantiation.
      • Ideas: WASM + <canvas>? Multiplex over the network?

Dependencies

~250–700KB
~17K SLoC