21 releases

✓ Uses Rust 2018 edition

new 0.7.3 May 21, 2020
0.7.1 Jan 12, 2020
0.6.1 Sep 13, 2018
0.6.0 Jul 18, 2018
0.1.2 Dec 26, 2016

#16 in Command-line interface

Download history 2164/week @ 2020-01-25 2563/week @ 2020-02-01 2337/week @ 2020-02-08 2513/week @ 2020-02-15 3256/week @ 2020-02-22 2948/week @ 2020-02-29 3185/week @ 2020-03-07 3253/week @ 2020-03-14 2763/week @ 2020-03-21 2746/week @ 2020-03-28 3051/week @ 2020-04-04 2932/week @ 2020-04-11 2969/week @ 2020-04-18 3588/week @ 2020-04-25 4689/week @ 2020-05-02 4082/week @ 2020-05-09

14,374 downloads per month
Used in 26 crates (5 directly)

WTFPL license

120KB
3K SLoC

terminfo

Crates.io Crates.io WTFPL Build Status

Terminal capabilities with type-safe getters.

Usage

Add this to your Cargo.toml:

[dependencies]
terminfo = "0.1"

and this to your crate root:

extern crate terminfo;

Example

extern crate terminfo;

use std::io::{self, Write};
use terminfo::{Expand, Database, capability as cap};

fn main() {
  let info = Database::from_env().unwrap();

  if let Some(cap::MaxColors(n)) = info.get::<cap::MaxColors>() {
    println!("The terminal supports {} colors.", n);
  }
  else {
    println!("The terminal does not support colors, what year is this?");
  }

  if let Some(flash) = info.get::<cap::FlashScreen>() {
    io::stdout().write_all(&flash.expand(&[], &mut Default::default()).unwrap()).unwrap();
  }
  else {
    println!("FLASH GORDON!");
  }
}

Packaging and Distributing

For all terminals but windows consoles, this library depends on a non-hashed (for now) terminfo database being present. For example, on Debian derivitives, you should depend on ncurses-term; on Arch Linux, you depend on ncurses; and on MinGW, you should depend on mingw32-terminfo.

Unfortunately, if you're using a non-windows console on Windows (e.g. MinGW, Cygwin, Git Bash), you'll need to set the TERMINFO environment variable to point to the directory containing the terminfo database.

Dependencies

~1MB
~20K SLoC