An open API service indexing awesome lists of open source software.

https://github.com/queer/makeup

Stylish CLIs/TUIs for Rust!
https://github.com/queer/makeup

Last synced: 11 months ago
JSON representation

Stylish CLIs/TUIs for Rust!

Awesome Lists containing this project

README

          

# makeup

Pretty CLI / TUI interfaces.

MSRV 1.70.

## READ ME FIRST

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

[crates.io](https://crates.io/crates/makeup)

### Usage examples

See [`examples/`](https://github.com/queer/makeup/tree/mistress/makeup/examples)!

### Demos

`cargo run --example wave`

## Setup

Install [pre-commit](https://pre-commit.com/).

```bash
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 + ``? Multiplex over the network?