Crate textmode

Source
Expand description

textmode is a library for terminal interaction built on top of a real terminal parsing library. It allows you to do arbitrary drawing operations on an in-memory screen, and then update the visible terminal output to reflect the in-memory screen via an optimized diff algorithm when you are finished. Being built on a real terminal parsing library means that while normal curses-like operations are available:

use textmode::Textmode;
let mut tm = textmode::Output::new().await?;
tm.clear();
tm.move_to(5, 5);
tm.set_fgcolor(textmode::color::RED);
tm.write_str("foo");
tm.refresh().await?;

you can also write data containing arbitrary terminal escape codes to the output and they will also do the right thing:

tm.write(b"\x1b[34m\x1b[3;9Hbar\x1b[m");
tm.refresh().await?;

This module is split into two main parts: [Output] and [Input]. See the documentation for those types for more details. Additionally, the blocking module provides an equivalent interface with blocking calls instead of async.

Modules§

blocking
Blocking interface.
color
Constants for the basic 16 terminal colors.

Enums§

Color
Represents a foreground or background color for cells.
Error
Type for errors returned by this crate.
Key
Type representing a keypress.

Traits§

Textmode
Provides the methods used to manipulate the in-memory screen.

Type Aliases§

Result
Convenience wrapper for a Result using textmode::Error.