***tengri*** is a metaframework for building interactive applications with rust. (aren't we all?) tengri is developed as part of [***tek***](https://codeberg.org/unspeaker/tek), a music program for terminals. tengri contains: * [***dizzle***](./dsl), a framework for defining domain-specific languages * [***output***](./output), an abstract UI layout framework * [***input***](./input), an abstract UI event framework * [***tui***](./tui), an implementation of tengri over [***ratatui***](https://ratatui.rs/). as well as: * [***core***](./core), the shared definitions ("utils") module * [***proc***](./proc), the space for procedural macros * [***tengri***](./tengri), the top-level reexport crate tengri is published under [**AGPL3**](./LICENSE). ## Input ***tengri_input*** is where tengri's input handling is defined. the following items are provided: * `Input` trait, for defining for input sources * `Handle` trait and `handle!` macro, for defining input handlers * `Command` trait and the `command!` macro, for defining commands that inputs may result in ## Output ***tengri_output*** is an abstract interface layout framework. it expresses the following notions: * [**space:**](./src/space.rs) `Direction`, `Coordinate`, `Area`, `Size`, `Measure` * [**output:**](./src/output.rs) `Out`, `Draw`, `Content` * the layout operators are generic over `Draw` and/or `Content` * the traits `Draw` and `Content` are generic over `Out` * implement `Out` to bring a layout to a new backend: [see `TuiOut` in `tengri_tui`](../tui/src/tui_engine/tui_output.rs) * [**layout:**](./src/layout.rs) * conditionals: `When`, `Either` * iteration: `Map` * concatenation: `Bsp` * positioning: `Align`, `Push`, `Pull` * sizing: `Fill`, `Fixed`, `Expand`, `Shrink`, `Min`, `Max` * implement custom components (that may be backend-dependent): [see `tui_content` in `tengri_tui`](../tui/src/tui_content) ## TUI ***tengri_tui*** implements [tengri_output](../output) and [tengri_input](../input) on top of [ratatui](https://ratatui.rs/) and [crossterm](https://github.com/crossterm-rs/crossterm). tengri is published under [**AGPL3**](../LICENSE).