☀️ interface framework that reaches for the sky 🎑
Find a file
2026-02-21 04:40:35 +02:00
.forgejo/workflows edn -> dsl 2025-03-15 16:49:26 +02:00
proc refactor: extract dizzle 2026-01-17 03:43:27 +02:00
tengri refactor: flatten this too 2026-02-21 04:40:35 +02:00
tui refactor: flatten this too 2026-02-21 04:40:35 +02:00
.editorconfig uuugh 2025-09-09 20:39:08 +03:00
.gitignore tabula rasa 2025-03-02 14:31:04 +02:00
bacon.toml refactor: flatten this too 2026-02-21 04:40:35 +02:00
Cargo.lock update Cargo.lock 2026-02-19 23:24:06 +02:00
Cargo.toml refactor: flatten this too 2026-02-21 04:40:35 +02:00
Justfile dsl, output, tui: add tests, examples, root dispatchers 2025-09-08 19:42:44 +03:00
LICENSE add license 2025-03-24 03:18:58 +02:00
README.md tek_ -> tengri_; reset to v0.1.0; add root reexporter package 2025-03-14 23:39:31 +02:00
shell.nix perf: use mold 2025-09-08 00:31:18 +03:00
tengri.svg dsl: refactor with eyes closed 2025-08-22 23:15:38 +03:00

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:

  • 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: Direction, Coordinate, Area, Size, Measure

  • output: 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
  • layout:

    • 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