Update README
Signed-off-by: Robert Vojta <rvojta@me.com>
This commit is contained in:
parent
53045bef0b
commit
d209074b0f
453
README.md
453
README.md
@ -2,332 +2,189 @@
|
|||||||
|
|
||||||
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8QK6XU749JB2) ![Travis][s7] [![Latest Version][s1]][l1] [![MIT][s2]][l2] [![docs][s3]][l3] ![Lines of Code][s6] [![Join us on Discord][s5]][l5]
|
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8QK6XU749JB2) ![Travis][s7] [![Latest Version][s1]][l1] [![MIT][s2]][l2] [![docs][s3]][l3] ![Lines of Code][s6] [![Join us on Discord][s5]][l5]
|
||||||
|
|
||||||
# cross-platform terminal manipulating library.
|
# Cross-platform Terminal Manipulation Library
|
||||||
|
|
||||||
Have you ever been disappointed when a terminal library for rust was only written for UNIX systems?
|
Have you ever been disappointed when a terminal library for the Rust language was only written for UNIX systems?
|
||||||
Crossterm provides clearing, input handling, styling, cursor movement, and terminal actions for both
|
Crossterm provides clearing, input handling, styling, cursor movement and terminal actions for both
|
||||||
Windows and UNIX systems.
|
Windows and UNIX systems.
|
||||||
|
|
||||||
Crossterm aims to be simple and easy to call in code.
|
Crossterm aims to be simple and easy to call in code. Through the simplicity of Crossterm, you do not have to
|
||||||
Through the simplicity of Crossterm, you do not have to worry about the platform you are working with.
|
worry about the platform you are working with.
|
||||||
|
|
||||||
This crate supports all UNIX and Windows terminals down to Windows 7 (not all terminals are tested
|
This crate supports all UNIX and Windows terminals down to Windows 7 (not all terminals are tested,
|
||||||
see [Tested Terminals](#tested-terminals) for more info).
|
see [Tested Terminals](#tested-terminals) for more info).
|
||||||
|
|
||||||
This crate consists of five modules that are provided behind
|
## Table of Contents
|
||||||
[feature flags](https://crossterm-rs.github.io/crossterm/docs/feature_flags.html) so that you can define
|
|
||||||
which features you'd like to have; by default, all features are enabled.
|
|
||||||
|
|
||||||
- [crossterm_style](https://crates.io/crates/crossterm_style)
|
* [Features](#features)
|
||||||
- [crossterm_input](https://crates.io/crates/crossterm_input)
|
* [Tested Terminals](#tested-terminals)
|
||||||
- [crossterm_screen](https://crates.io/crates/crossterm_screen)
|
* [Getting Started](#getting-started)
|
||||||
- [crossterm_cursor](https://crates.io/crates/crossterm_cursor)
|
* [Feature Flags](#feature-flags)
|
||||||
- [crossterm_terminal](https://crates.io/crates/crossterm_terminal)
|
* [`crossterm` vs `crossterm_*` crates](#crossterm-vs-crossterm_-crates)
|
||||||
|
* [Other Resources](#other-resources)
|
||||||
## Table of contents:
|
* [Used By](#used-by)
|
||||||
|
* [Contributing](#contributing)
|
||||||
- [Getting started](#getting-started)
|
|
||||||
- [Useful links](#useful-links)
|
|
||||||
- [Features](#features)
|
|
||||||
- [Examples](#examples)
|
|
||||||
- [Styled Text](#styled-text)
|
|
||||||
- [Cursor](#cursor)
|
|
||||||
- [Terminal](#terminal)
|
|
||||||
- [Input Reading](#input-reading)
|
|
||||||
- [Tested Terminals](#tested-terminals)
|
|
||||||
- [Contributing](#contributing)
|
|
||||||
- [Authors](#authors)
|
|
||||||
- [License](#license)
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
All [examples](https://github.com/crossterm-rs/examples) of how crossterm works can be found in the example repository.
|
|
||||||
|
|
||||||
Add the Crossterm package to your `Cargo.toml` file.
|
|
||||||
|
|
||||||
```
|
|
||||||
[dependencies]
|
|
||||||
crossterm = "0.11"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Useful Links
|
|
||||||
|
|
||||||
- [Book](https://crossterm-rs.github.io/crossterm/docs/)
|
|
||||||
- [Documentation](https://docs.rs/crossterm/)
|
|
||||||
- [Crates.io](https://crates.io/crates/crossterm)
|
|
||||||
- [Examples](https://github.com/crossterm-rs/examples)
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Cross-platform
|
- Cross-platform
|
||||||
- Multi-threaded (send, sync)
|
- Multi-threaded (send, sync)
|
||||||
- Detailed Documentation
|
- Detailed documentation
|
||||||
- Few Dependencies
|
- Few dependencies
|
||||||
- Cursor
|
- Cursor (feature `cursor`)
|
||||||
- Moving _n_ times (up, down, left, right)
|
- Move the cursor N times (up, down, left, right)
|
||||||
- Position (set/get)
|
- Set/get the cursor position
|
||||||
- Store cursor position and resetting to that later
|
- Store the cursor position and restore to it later
|
||||||
- Hiding/Showing
|
- Hide/show the cursor
|
||||||
- Blinking Cursor (supported by only some terminals)
|
- Enable/disable cursor blinking (not all terminals do support this feature)
|
||||||
- Styled output
|
- Styled output (feature `style`)
|
||||||
- Foreground Color (16 base colors)
|
- Foreground color (16 base colors)
|
||||||
- Background Color (16 base colors)
|
- Background color (16 base colors)
|
||||||
- 256 (ANSI) Color Support (Windows 10 and UNIX Only)
|
- 256 (ANSI) color support (Windows 10 and UNIX only)
|
||||||
- RGB Color Support (Windows 10 and UNIX only)
|
- RGB color support (Windows 10 and UNIX only)
|
||||||
- Text Attributes: bold, italic, underscore and crossed word and [more](https://crossterm-rs.github.io/crossterm/docs//styling.html#attributes) (Windows 10 and UNIX only)
|
- Text attributes like bold, italic, underscore, crossed, etc.
|
||||||
- Terminal
|
- Terminal (feature `terminal`)
|
||||||
- Clearing (all lines, current line, from cursor down and up, until new line)
|
- Clear (all lines, current line, from cursor down and up, until new line)
|
||||||
- Scrolling (up, down)
|
- Scroll up, down
|
||||||
- Terminal Size (get/set)
|
- Set/get the terminal size
|
||||||
- Alternate Screen
|
- Exit current process
|
||||||
- Raw Screen
|
- Input (feature `input`)
|
||||||
- Exit Current Process
|
|
||||||
- Input
|
|
||||||
- Read character
|
- Read character
|
||||||
- Read line
|
- Read line
|
||||||
- Read key input events (async / sync)
|
- Read key input events (async / sync)
|
||||||
- Read mouse input events (press, release, position, button)
|
- Read mouse input events (press, release, position, button)
|
||||||
|
- Screen (feature `screen`)
|
||||||
|
- Alternate screen
|
||||||
|
- Raw screen
|
||||||
|
|
||||||
## Examples
|
<!--
|
||||||
|
WARNING: Do not change following heading title as it's used in the URL by other crates!
|
||||||
|
-->
|
||||||
|
|
||||||
These are some basic examples demonstrating how to use this crate. See the
|
### Tested Terminals
|
||||||
[examples](https://github.com/crossterm-rs/examples) repository.
|
|
||||||
|
|
||||||
### Command API
|
|
||||||
|
|
||||||
My first recommendation is to use the [command API](https://crossterm-rs.github.io/crossterm/docs/command.html)
|
|
||||||
because this might replace some of the existing API in the future. It is more convenient, faster, and easier to use.
|
|
||||||
|
|
||||||
### Styled Text
|
|
||||||
|
|
||||||
This module enables you to style the terminal text.
|
|
||||||
|
|
||||||
Good documentation can be found at the following places: [docs](https://docs.rs/crossterm_style/),
|
|
||||||
[book](https://crossterm-rs.github.io/crossterm/docs/styling.html)
|
|
||||||
and [examples](https://github.com/crossterm-rs/examples/blob/master/examples/src/bin/key_events.rs).
|
|
||||||
|
|
||||||
_style text with attributes_
|
|
||||||
|
|
||||||
```rust
|
|
||||||
use crossterm::{Colored, Color, Colorize, Styler, Attribute};
|
|
||||||
|
|
||||||
// pass any `Attribute` value to the formatting braces.
|
|
||||||
println!("{} Underlined {} No Underline", Attribute::Underlined, Attribute::NoUnderline);
|
|
||||||
|
|
||||||
// you could also call different attribute methods on a `&str` and keep on chaining if needed.
|
|
||||||
let styled_text = "Bold Underlined".bold().underlined();
|
|
||||||
println!("{}", styled_text);
|
|
||||||
```
|
|
||||||
|
|
||||||
_style text with colors_
|
|
||||||
|
|
||||||
```rust
|
|
||||||
println!("{} Red foreground color", Colored::Fg(Color::Red));
|
|
||||||
println!("{} Blue background color", Colored::Bg(Color::Blue));
|
|
||||||
|
|
||||||
// you can also call different coloring methods on a `&str`.
|
|
||||||
let styled_text = "Bold Underlined".red().on_blue();
|
|
||||||
println!("{}", styled_text);
|
|
||||||
```
|
|
||||||
|
|
||||||
_style text with RGB and ANSI Value_
|
|
||||||
|
|
||||||
```rust
|
|
||||||
// custom rgb value (Windows 10 and UNIX systems)
|
|
||||||
println!("{} some colored text", Colored::Fg(Color::Rgb {
|
|
||||||
r: 10,
|
|
||||||
g: 10,
|
|
||||||
b: 10
|
|
||||||
}));
|
|
||||||
|
|
||||||
// custom ansi color value (Windows 10 and UNIX systems)
|
|
||||||
println!("{} some colored text", Colored::Fg(Color::AnsiValue(10)));
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cursor
|
|
||||||
|
|
||||||
This module enables you to work with the terminal cursor.
|
|
||||||
|
|
||||||
Good documentation could be found on the following places: [docs](https://docs.rs/crossterm_cursor/) and
|
|
||||||
[examples](https://github.com/crossterm-rs/examples).
|
|
||||||
|
|
||||||
```rust
|
|
||||||
use crossterm::cursor;
|
|
||||||
|
|
||||||
let mut cursor = cursor();
|
|
||||||
|
|
||||||
/// Moving the cursor
|
|
||||||
// Set the cursor to position X: 10, Y: 5 in the terminal
|
|
||||||
cursor.goto(10,5);
|
|
||||||
|
|
||||||
// Move the cursor up,right,down,left 3 cells.
|
|
||||||
cursor.move_up(3);
|
|
||||||
cursor.move_right(3);
|
|
||||||
cursor.move_down(3);
|
|
||||||
cursor.move_left(3);
|
|
||||||
|
|
||||||
/// Safe the current cursor position to recall later
|
|
||||||
// Goto X: 5 Y: 5
|
|
||||||
cursor.goto(5,5);
|
|
||||||
// Safe cursor position: X: 5 Y: 5
|
|
||||||
cursor.save_position();
|
|
||||||
// Goto X: 5 Y: 20
|
|
||||||
cursor.goto(5,20);
|
|
||||||
// Print at X: 5 Y: 20.
|
|
||||||
print!("Yea!");
|
|
||||||
// Reset back to X: 5 Y: 5.
|
|
||||||
cursor.restore_position();
|
|
||||||
// Print 'Back' at X: 5 Y: 5.
|
|
||||||
print!("Back");
|
|
||||||
|
|
||||||
// hide cursor
|
|
||||||
cursor.hide();
|
|
||||||
// show cursor
|
|
||||||
cursor.show();
|
|
||||||
// blink or not blinking of the cursor (not widely supported)
|
|
||||||
cursor.blink(true)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Terminal
|
|
||||||
|
|
||||||
This module enables you to work with the terminal in general.
|
|
||||||
|
|
||||||
Good documentation could be found on the following places: [docs](https://docs.rs/crossterm_terminal/) and
|
|
||||||
[examples](https://github.com/crossterm-rs/examples).
|
|
||||||
|
|
||||||
```rust
|
|
||||||
use crossterm::{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");
|
|
||||||
```
|
|
||||||
|
|
||||||
### Input Reading
|
|
||||||
|
|
||||||
This module enables you to read user input events.
|
|
||||||
|
|
||||||
Good documentation could be found on the following places: [docs](https://docs.rs/crossterm_input/),
|
|
||||||
[book](https://crossterm-rs.github.io/crossterm/docs/input.html) and
|
|
||||||
[examples](https://github.com/crossterm-rs/examples).
|
|
||||||
|
|
||||||
_available imports_
|
|
||||||
```rust
|
|
||||||
use crossterm_input::{
|
|
||||||
input, InputEvent, KeyEvent, MouseButton, MouseEvent, TerminalInput, AsyncReader, SyncReader, Screen
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
_Simple Readings_
|
|
||||||
|
|
||||||
```rust
|
|
||||||
let mut input = input();
|
|
||||||
|
|
||||||
match input.read_char() {
|
|
||||||
Ok(s) => println!("char typed: {}", s),
|
|
||||||
Err(e) => println!("char error : {}", e),
|
|
||||||
}
|
|
||||||
|
|
||||||
match input.read_line() {
|
|
||||||
Ok(s) => println!("string typed: {}", s),
|
|
||||||
Err(e) => println!("error: {}", e),
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
_Read input events synchronously or asynchronously._
|
|
||||||
|
|
||||||
```rust
|
|
||||||
// make sure to enable raw mode, this will make sure key events won't be handled by the terminal it's
|
|
||||||
// self and allows crossterm to read the input and pass it back to you.
|
|
||||||
let screen = RawScreen::into_raw_mode();
|
|
||||||
|
|
||||||
let mut input = input();
|
|
||||||
|
|
||||||
// either read the input synchronously
|
|
||||||
let stdin = input.read_sync();
|
|
||||||
|
|
||||||
// or asynchronously
|
|
||||||
let stdin = input.read_async();
|
|
||||||
|
|
||||||
if let Some(key_event) = stdin.next() {
|
|
||||||
match key_event {
|
|
||||||
InputEvent::Keyboard(event: KeyEvent) => match event { /* check key event */ }
|
|
||||||
InputEvent::Mouse(event: MouseEvent) => match event { /* check mouse event */ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
_Enable mouse input events._
|
|
||||||
|
|
||||||
```rust
|
|
||||||
let input = input();
|
|
||||||
|
|
||||||
// enable mouse events to be captured.
|
|
||||||
input.enable_mouse_mode().unwrap();
|
|
||||||
|
|
||||||
// disable mouse events to be captured.
|
|
||||||
input.disable_mouse_mode().unwrap();
|
|
||||||
```
|
|
||||||
|
|
||||||
### Alternate and Raw Screen
|
|
||||||
|
|
||||||
These concepts are a little more complex and would take over the README, please check out
|
|
||||||
the [docs](https://docs.rs/crossterm_screen/), [book](https://crossterm-rs.github.io/crossterm/docs/screen.html)
|
|
||||||
and [examples](https://github.com/crossterm-rs/examples).
|
|
||||||
|
|
||||||
## Used by
|
|
||||||
|
|
||||||
- [Broot](https://dystroy.org/broot/)
|
|
||||||
- [Cursive](https://github.com/gyscos/Cursive)
|
|
||||||
- [TUI](https://github.com/fdehau/tui-rs)
|
|
||||||
- [Rust-sloth](https://github.com/jonathandturner/rust-sloth/tree/crossterm-port)
|
|
||||||
|
|
||||||
## Tested terminals
|
|
||||||
|
|
||||||
- Windows Powershell
|
- Windows Powershell
|
||||||
- Windows 10 (pro)
|
- Windows 10 (Pro)
|
||||||
- Windows CMD
|
- Windows CMD
|
||||||
- Windows 10 (pro)
|
- Windows 10 (Pro)
|
||||||
- Windows 8.1 (N)
|
- Windows 8.1 (N)
|
||||||
- Ubuntu Desktop Terminal
|
- Ubuntu Desktop Terminal
|
||||||
- Ubuntu 17.10
|
- Ubuntu 17.10
|
||||||
- (Arch, Manjaro) KDE Konsole
|
- (Arch, Manjaro) KDE Konsole
|
||||||
- Linux Mint
|
- Linux Mint
|
||||||
|
|
||||||
This crate supports all Unix terminals and Windows terminals down to Windows 7; however, not all of the
|
This crate supports all UNIX terminals and Windows terminals down to Windows 7; however, not all of the
|
||||||
terminals have been tested. If you have used this library for a terminal other than the above list without
|
terminals have been tested. If you have used this library for a terminal other than the above list without
|
||||||
issues, then feel free to add it to the above list - I really would appreciate it!
|
issues, then feel free to add it to the above list - I really would appreciate it!
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
Click to show Cargo.toml.
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[dependencies]
|
||||||
|
crossterm = "0.11"
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use std::io::{stdout, Write};
|
||||||
|
|
||||||
|
use crossterm::{execute, Attribute, Color, Output, ResetColor, Result, SetBg, SetFg};
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
execute!(
|
||||||
|
stdout(),
|
||||||
|
// Blue foreground
|
||||||
|
SetFg(Color::Blue),
|
||||||
|
// Red background
|
||||||
|
SetBg(Color::Red),
|
||||||
|
Output("Styled text here.".to_string()),
|
||||||
|
// Reset to default colors
|
||||||
|
ResetColor
|
||||||
|
)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Feature Flags
|
||||||
|
|
||||||
|
All features are enabled by default. You can disable default features and enable some of them only.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[dependencies.crossterm]
|
||||||
|
version = "0.11"
|
||||||
|
default-features = false # Disable default features
|
||||||
|
features = ["cursor", "screen"] # Enable required features only
|
||||||
|
```
|
||||||
|
|
||||||
|
| Feature | Description | Links |
|
||||||
|
| :-- | :-- | :-- |
|
||||||
|
| `input` | Sync/Async input readers | [API documentation](https://docs.rs/crossterm_input), [crates.io](https://crates.io/crates/crossterm_input), [GitHub](https://github.com/crossterm-rs/crossterm-input) |
|
||||||
|
| `cursor` | Cursor manipulation | [API documentation](https://docs.rs/crossterm_cursor), [crates.io](https://crates.io/crates/crossterm_cursor), [GitHub](https://github.com/crossterm-rs/crossterm-cursor) |
|
||||||
|
| `screen` | Alternate screen & raw mode | [API documentation](https://docs.rs/crossterm_screen), [crates.io](https://crates.io/crates/crossterm_screen), [GitHub](https://github.com/crossterm-rs/crossterm-screen) |
|
||||||
|
| `terminal` | Size, clear, scroll | [API documentation](https://docs.rs/crossterm_terminal), [crates.io](https://crates.io/crates/crossterm_terminal), [GitHub](https://github.com/crossterm-rs/crossterm-terminal) |
|
||||||
|
| `style` | Colors, text attributes | [API documentation](https://docs.rs/crossterm_style), [crates.io](https://crates.io/crates/crossterm_style), [GitHub](https://github.com/crossterm-rs/crossterm-style) |
|
||||||
|
|
||||||
|
### `crossterm` vs `crossterm_*` crates
|
||||||
|
|
||||||
|
There're two ways how to use the Crossterm library:
|
||||||
|
|
||||||
|
* `crossterm` crate with the `cursor` feature flag,
|
||||||
|
* `crossterm_cursor` crate.
|
||||||
|
|
||||||
|
Both provide same functionality, the only difference is the namespace (`crossterm` vs `crossterm_cursor`).
|
||||||
|
|
||||||
|
The first way (`crossterm` crate with feature flags) is preferred. The second way will be
|
||||||
|
deprecated and no longer supported soon. The `crossterm_*` crates will be marked as deprecated and
|
||||||
|
repositories archived on the GitHub. See the
|
||||||
|
[Merge sub-crates to the crossterm crate](https://github.com/crossterm-rs/crossterm/issues/265)
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
#### `crossterm` crate:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[dependencies.crossterm]
|
||||||
|
version = "0.11"
|
||||||
|
default-features = false # Disable default features
|
||||||
|
features = ["cursor"] # Enable cursor feature only
|
||||||
|
```
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use crossterm::cursor;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `crossterm_curosr` crate:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[dependencies]
|
||||||
|
crossterm_cursor = "0.3"
|
||||||
|
```
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use crossterm_cursor::cursor;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Other Resources
|
||||||
|
|
||||||
|
- [API documentation](https://docs.rs/crossterm/)
|
||||||
|
- [Examples repository](https://github.com/crossterm-rs/examples)
|
||||||
|
|
||||||
|
## Used By
|
||||||
|
|
||||||
|
- [Broot](https://dystroy.org/broot/)
|
||||||
|
- [Cursive](https://github.com/gyscos/Cursive)
|
||||||
|
- [TUI](https://github.com/fdehau/tui-rs)
|
||||||
|
- [Rust-sloth](https://github.com/jonathandturner/rust-sloth/tree/crossterm-port)
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
I highly appreciate it when you contribute to this crate.
|
I highly appreciate when anyone contributes to this crate. Before you do, please,
|
||||||
Please visit the discord or issue list for more information
|
read the [Contributing](docs/CONTRIBUTING.md) guidelines.
|
||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
@ -335,15 +192,15 @@ Please visit the discord or issue list for more information
|
|||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
Would you like crossterm to be even more gorgeous and beautiful? You can help with this by donating.
|
Would you like Crossterm to be even more gorgeous and beautiful? You can help with this by donating.
|
||||||
|
|
||||||
[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8QK6XU749JB2)
|
[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8QK6XU749JB2)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project, crossterm and all it's sub-modules: crossterm_screen, crossterm_cursor, crossterm_style,
|
This project, `crossterm` and all it's sub-crates: `crossterm_screen`, `crossterm_cursor`, `crossterm_style`,
|
||||||
crossterm_input, crossterm_terminal, crossterm_winapi, crossterm_utils are licensed under the MIT License - see
|
`crossterm_input`, `crossterm_terminal`, `crossterm_winapi`, `crossterm_utils` are licensed under the MIT
|
||||||
the [LICENSE](https://github.com/crossterm-rs/crossterm/blob/master/LICENSE) file for details
|
License - see the [LICENSE](https://github.com/crossterm-rs/crossterm/blob/master/LICENSE) file for details.
|
||||||
|
|
||||||
[s1]: https://img.shields.io/crates/v/crossterm.svg
|
[s1]: https://img.shields.io/crates/v/crossterm.svg
|
||||||
[l1]: https://crates.io/crates/crossterm
|
[l1]: https://crates.io/crates/crossterm
|
||||||
|
Loading…
Reference in New Issue
Block a user