1//! A simple utility for getting the size of a terminal.
2//!
3//! Supports both Linux, MacOS, and Windows.
4//!
5//! This crate requires a minimum rust version of 1.48.0 (2020-11-19)
6//!
7//! # Example
8//!
9//! ```
10//! use terminal_size::{Width, Height, terminal_size};
11//!
12//! let size = terminal_size();
13//! if let Some((Width(w), Height(h))) = size {
14//! println!("Your terminal is {} cols wide and {} lines tall", w, h);
15//! } else {
16//! println!("Unable to get terminal size");
17//! }
18//! ```
19//!
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
22pub struct Width(pub u16);
23#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
24pub struct Height(pub u16);
25
26#[cfg(unix)]
27mod unix;
28#[cfg(unix)]
29pub use crate::unix::{terminal_size, terminal_size_using_fd};
30
31#[cfg(windows)]
32mod windows;
33#[cfg(windows)]
34pub use crate::windows::{terminal_size, terminal_size_using_handle};
35
36#[cfg(not(any(unix, windows)))]
37pub fn terminal_size() -> Option<(Width, Height)> {
38 None
39}
40