mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2026-02-21 10:39:03 +01:00
☀️ interface framework that reaches for the sky 🎑
| .forgejo/workflows | ||
| proc | ||
| tengri | ||
| tui | ||
| .editorconfig | ||
| .gitignore | ||
| bacon.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Justfile | ||
| LICENSE | ||
| README.md | ||
| shell.nix | ||
| tengri.svg | ||
tengri is a metaframework for building interactive applications with rust. (aren't we all?)
tengri is developed as part of tek, a music program for terminals.
tengri contains:
- dizzle, a framework for defining domain-specific languages
- output, an abstract UI layout framework
- input, an abstract UI event framework
- tui, an implementation of tengri over ratatui.
as well as:
- core, the shared definitions ("utils") module
- proc, the space for procedural macros
- tengri, the top-level reexport crate
tengri is published under AGPL3.
Input
tengri_input is where tengri's input handling is defined.
the following items are provided:
Inputtrait, for defining for input sourcesHandletrait andhandle!macro, for defining input handlersCommandtrait and thecommand!macro, for defining commands that inputs may result in
Output
tengri_output is an abstract interface layout framework.
it expresses the following notions:
-
space:
Direction,Coordinate,Area,Size,Measure -
output:
Out,Draw,Content- the layout operators are generic over
Drawand/orContent - the traits
DrawandContentare generic overOut - implement
Outto bring a layout to a new backend: seeTuiOutintengri_tui
- the layout operators are generic over
-
- 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_contentintengri_tui
- conditionals: