tui-prompts
tui-prompts
is a Rust crate that provides prompt widgets for the Ratatui crate. It allows for easy
creation of interactive command-line interfaces with various types of prompts. Inspired by
https://www.npmjs.com/package/prompts and various other prompt libraries.
Examples
Text Prompt
See the text example for more details.
Soft Wrapping
Text is automatically character wrapped to fit in the render area.
See the multi line example for more details.
Features
- Text prompt
- Password prompt
- Invisible prompt
- Readline / emacs style Key Bindings
- Crossterm backend
- Soft wrapping single lines
- Multi-line input
- Scrolling
- More prompt types:
- Number
- Confirm
- List
- Toggle
- Select
- Multi-select
- Autocomplete
- Autocomplete multi-select
- Date
- Bracketed paste
- Validation
- Default initial value
- Custom style
- Themes
- Custom formatting
- Backend agnostic keyboard event handling (Termion and Termwiz)
- Customizable key bindings
- Handle more advanced multi-key bindings e.g.
^[b
and^[f
for start / end of line - Prompt chaining
Installation
cargo add ratatui tui-prompts crossterm
Or add the following to your Cargo.toml
file:
Key Bindings
Key | Action |
---|---|
Home, Ctrl+A | Move cursor to beginning of line |
End, Ctrl+E | Move cursor to end of line |
Left, Ctrl+B | Move cursor one character left |
Right, Ctrl+F | Move cursor one character right |
Backspace (Delete on Mac), Ctrl+H | Delete character before cursor |
Delete (Fn+Delete on Mac), Ctrl+D | Delete character at cursor |
Ctrl+K | Delete all characters from the cursor to the end of line |
Ctrl+U | Delete the entire line |
Enter | Complete the prompt |
Escape, Ctrl+C | Abort the prompt |
License
Copyright (c) Josh McKinney
This project is licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.