Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/console-rs/console
A rust console and terminal abstraction
https://github.com/console-rs/console
Last synced: about 22 hours ago
JSON representation
A rust console and terminal abstraction
- Host: GitHub
- URL: https://github.com/console-rs/console
- Owner: console-rs
- License: mit
- Created: 2017-05-09T11:48:36.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-20T12:05:13.000Z (about 2 months ago)
- Last Synced: 2024-10-29T16:24:13.827Z (15 days ago)
- Language: Rust
- Size: 225 KB
- Stars: 942
- Watchers: 7
- Forks: 112
- Open Issues: 70
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `console`
[![Build Status](https://github.com/console-rs/console/workflows/CI/badge.svg?branch=master)](https://github.com/console-rs/console/actions?query=workflow%3ACI)
[![Crates.io](https://img.shields.io/crates/d/console.svg)](https://crates.io/crates/console)
[![License](https://img.shields.io/github/license/console-rs/console)](https://github.com/console-rs/console/blob/master/LICENSE)
[![rustc 1.56.0](https://img.shields.io/badge/rust-1.56%2B-orange.svg)](https://img.shields.io/badge/rust-1.56%2B-orange.svg)
[![Documentation](https://docs.rs/console/badge.svg)](https://docs.rs/console)**console** is a library for Rust that provides access to various terminal
features so you can build nicer looking command line interfaces. It
comes with various tools and utilities for working with Terminals and
formatting text.Best paired with other libraries in the family:
* [dialoguer](https://docs.rs/dialoguer)
* [indicatif](https://docs.rs/indicatif)## Terminal Access
The terminal is abstracted through the `console::Term` type. It can
either directly provide access to the connected terminal or by buffering
up commands. A buffered terminal will however not be completely buffered
on windows where cursor movements are currently directly passed through.Example usage:
```rust
use std::thread;
use std::time::Duration;use console::Term;
let term = Term::stdout();
term.write_line("Hello World!")?;
thread::sleep(Duration::from_millis(2000));
term.clear_line()?;
```## Colors and Styles
`console` automaticaly detects when to use colors based on the tty flag. It also
provides higher level wrappers for styling text and other things that can be
displayed with the `style` function and utility types.Example usage:
```rust
use console::style;println!("This is {} neat", style("quite").cyan());
```You can also store styles and apply them to text later:
```rust
use console::Style;let cyan = Style::new().cyan();
println!("This is {} neat", cyan.apply_to("quite"));
```## Working with ANSI Codes
The crate provides the function `strip_ansi_codes` to remove ANSI codes
from a string as well as `measure_text_width` to calculate the width of a
string as it would be displayed by the terminal. Both of those together
are useful for more complex formatting.## Unicode Width Support
By default this crate depends on the `unicode-width` crate to calculate
the width of terminal characters. If you do not need this you can disable
the `unicode-width` feature which will cut down on dependencies.License: MIT