Crate fatui

Source
Expand description

fatui is a textmode ui interface library that aims to be flexible, cell-perfect, immediate-mode.

you’ll start by finding a Backend, which represents the actual input and output system – ansi terminals, graphical renderers, whatever. you usually want open – that’ll pick “the right one”, based on the features you have configured and the runtime environment.

from there you’ll call Backend::step to get a Frame, which represents the input state and lets you render the output. notably: none of the operations on it actually do any i/o – they’re purely in memory, which makes it quite quick to work with. the actual input and output are all contained in the step function.

once you have a frame, you can do two major things with it:

  • [Frame::split] splits up the frame into multiple non-overlapping regions, each of which can itself be treated like a frame, say by splitting it even further
  • [Frame::render] renders a component into a frame, processing some input and returning some output

for details about the builtin functionality, check the split and [component] module docs.

Re-exports§

pub use backend::Backend;
pub use backend::open;
pub use frame::Frame;
pub use input::Event;
pub use input::InputState;
pub use input::StateEvent;
pub use split::Splitter;

Modules§

backend
the bridge to the actual os input/output
frame
a frame of input and output
grid
a generic grid of things
input
inputs from i/o
output
outputs to i/o.
pos
utilities and types for tracking and calculating with locations
split
split Frames into pieces

Enums§

KeyCode
Represents a key.
MouseButton
Represents a mouse button.