Crate textmode[][src]

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 interface.

Constants for the basic 16 terminal colors.

Enums

Represents a foreground or background color for cells.

Type for errors returned by this crate.

Type representing a keypress.

Traits

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

Type Definitions

Convenience wrapper for a Result using textmode::Error.