crossterm_terminal 0.2.2

A cross-platform library for doing terminal related actions.

Crossterm Terminal | cross-platform terminal actions.

Lines of Code Latest Version MIT docs Join us on Discord

This crate allows you to perform terminal related actions cross-platform e.g clearing, resizing etc. It supports all UNIX and windows terminals down to windows 7 (not all terminals are tested see Tested Terminals for more info)

This crate is a sub-crate of crossterm to perform terminal related actions, and can be use individually.

Other sub-crates are:

When you want to use other modules as well you might want to use crossterm with feature flags.

Table of contents:

Getting Started

This documentation is only for crossterm_terminal version 0.2 check the examples folders with detailed examples for all functionality of this crate.

Add the crossterm_terminal package to your Cargo.toml file.

[dependencies]
crossterm_terminal = "0.2"

And import the crossterm_terminal modules you want to use.

extern crate crossterm_terminal;

pub use crossterm_terminal::{terminal, Terminal, ClearType};

Useful Links

Features

These are the features of this crate:

  • Cross-platform
  • Multithreaded (send, sync)
  • Detailed Documentation
  • Few Dependencies
  • Terminal
    • Clearing (all lines, current line, from cursor down and up, until new line)
    • Scrolling (up, down)
    • Terminal Size (get/set)
    • Exit Current Process

Examples

The examples folder has more complete and verbose examples.

use crossterm::terminal::{terminal,ClearType};

let mut terminal = terminal();

// Clear all lines in terminal;
terminal.clear(ClearType::All);
// Clear all cells from current cursor position down.
terminal.clear(ClearType::FromCursorDown);
// Clear all cells from current cursor position down.
terminal.clear(ClearType::FromCursorUp);
// Clear current line cells.
terminal.clear(ClearType::CurrentLine);
// Clear all the cells until next line.
terminal.clear(ClearType::UntilNewLine);

// Get terminal size
let (width, height) = terminal.terminal_size();
print!("X: {}, y: {}", width, height);

// Scroll down, up 10 lines.
terminal.scroll_down(10);
terminal.scroll_up(10);

// Set terminal size (width, height)
terminal.set_size(10,10);

// exit the current process.
terminal.exit();

// write to the terminal whether you are on the main screen or alternate screen.
terminal.write("Some text\n Some text on new line");

Tested terminals

  • Windows Powershell
    • Windows 10 (pro)
  • Windows CMD
    • Windows 10 (pro)
    • Windows 8.1 (N)
  • Ubuntu Desktop Terminal
    • Ubuntu 17.10
  • (Arch, Manjaro) KDE Konsole
  • Linux Mint

This crate supports all Unix terminals and windows terminals down to Windows 7 but not all of them have been tested. If you have used this library for a terminal other than the above list without issues feel free to add it to the above list, I really would appreciate it.

Authors

  • Timon Post - Project Owner & creator

License

This project is licensed under the MIT License - see the LICENSE.md file for details