1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
//! This crate is used to interact with Posix terminal. It can be used to
//! - Read events from the terminal
//! - Send commands to the terminal
//! - Render on a surface which will be reconciled with current content of the terminal
//! - Issue direct commends to the terminal
//! - Supports kitty/sixel image protocol
//!
//! ### Simple example
//! ```no_run
//! use surf_n_term::{Terminal, TerminalEvent, TerminalAction, SystemTerminal, Error};
//!
//! fn main() -> Result<(), Error> {
//! let ctrl_c = TerminalEvent::Key("ctrl+c".parse()?);
//! let mut term = SystemTerminal::new()?;
//! term.run_render(|term, event, mut view| -> Result<_, Error> {
//! // This function will be executed on each event from terminal
//! // - term - implements Terminal trait
//! // - event - is a TerminalEvent
//! // - view - is a Surface that can be used to render on, see render module for details
//! match event {
//! Some(event) if &event == &ctrl_c => {
//! // exit if 'ctrl+c' is pressed
//! Ok(TerminalAction::Quit(()))
//! }
//! _ => {
//! // do some rendering by updating the view
//! Ok(TerminalAction::Wait)
//! },
//! }
//! })?;
//! Ok(())
//! }
//! ```
#![allow(clippy::type_complexity)]
#![allow(clippy::reversed_empty_ranges)]
#![allow(clippy::excessive_precision)]
#![deny(warnings)]
pub mod automata;
pub mod common;
pub mod decoder;
pub mod encoder;
pub mod error;
pub mod face;
pub mod glyph;
pub mod image;
pub mod keys;
pub mod render;
pub mod surface;
pub mod terminal;
mod unix;
pub mod view;
pub use error::Error;
pub use face::{Face, FaceAttrs};
pub use glyph::{BBox, FillRule, Glyph, Path};
pub use image::{ColorPalette, Image, ImageHandler, KittyImageHandler, SixelImageHandler};
pub use keys::{Key, KeyMap, KeyMod, KeyName};
pub use rasterize::{Color, LinColor, RGBA};
pub use render::{Cell, TerminalSurface, TerminalSurfaceExt, TerminalWriter};
pub use surface::{
Shape, Surface, SurfaceIter, SurfaceMut, SurfaceMutIter, SurfaceMutView, SurfaceOwned,
SurfaceOwnedView, SurfaceView,
};
pub use terminal::{
DecMode, DecModeStatus, Position, Size, Terminal, TerminalAction, TerminalCaps, TerminalColor,
TerminalCommand, TerminalEvent, TerminalSize, TerminalWaker,
};
/// System specific terminal
pub type SystemTerminal = unix::UnixTerminal;