#tui #terminal


textarea component for tui-realm

4 stable releases

1.1.2 Aug 29, 2023
1.1.1 Oct 17, 2022
1.1.0 Aug 2, 2022
1.0.0 Jun 23, 2022

#2520 in Command line utilities

Download history 15/week @ 2023-10-19 13/week @ 2023-10-26 14/week @ 2023-11-02 11/week @ 2023-11-09 15/week @ 2023-11-16 23/week @ 2023-11-23 19/week @ 2023-11-30 12/week @ 2023-12-07 15/week @ 2023-12-14 16/week @ 2023-12-21 10/week @ 2023-12-28 15/week @ 2024-01-04 19/week @ 2024-01-11 8/week @ 2024-01-18 16/week @ 2024-01-25 20/week @ 2024-02-01

65 downloads per month
Used in tuifeed

MIT license

579 lines


~ Textarea component for tui-realm ~

tui-textarea · tui-realm · Documentation

Developed by @veeso

Current version: 1.1.2 (29/08/2023)

License-MIT Repo stars Downloads counter Latest version Ko-fi

CI Docs

About tui-realm-textarea ✏️

tui-realm-textarea is an implementation of a textarea component for tui-realm. It is based on the tui-textarea component by rhysd.


Get started 🏁

Add tui-realm-textarea to your Cargo.toml 🦀

tui-realm-textarea = "^1.1.0"

Or if you don't use Crossterm, define the backend as you do with tui-realm:

tui-realm-textarea = { version = "^1.1.0", default-features = false, features = [ "with-termion" ] }

Features ⚙️

These features can be enabled in tui-realm-textarea:

  • clipboard enables system clipboard support
  • search enables the string search in the textarea

Examples 📋

View how to use the textarea component in the example. The example contains a simple text editor.

cargo run --example demo --features clipboard,search

Press ESC to quit

Component API


Cmd Result Behaviour
Custom($TEXTAREA_CMD_NEWLINE) None Insert newline
Custom($TEXTAREA_CMD_DEL_LINE_BY_END) None Delete line by end to current position
Custom($TEXTAREA_CMD_DEL_LINE_BY_HEAD) None Delete line by head to current position
Custom($TEXTAREA_CMD_DEL_WORD) None Delete the current word
Custom($TEXTAREA_CMD_DEL_NEXT_WORD) None Delete the next word
Custom($TEXTAREA_CMD_MOVE_WORD_FORWARD) None Move to the next word
Custom($TEXTAREA_CMD_MOVE_WORD_BACK) None Move to the previous word
Custom($TEXTAREA_CMD_MOVE_PARAGRAPH_BACK) None Move to the previous paragraph
Custom($TEXTAREA_CMD_MOVE_PARAGRAPH_FORWARD) None Move to the next paragraph
Custom($TEXTAREA_CMD_MOVE_TOP) None Move to the beginning of the file
Custom($TEXTAREA_CMD_MOVE_BOTTOM) None Move to the end of the file
Custom($TEXTAREA_CMD_UNDO) None Undo last change
Custom($TEXTAREA_CMD_REDO) None Redo last change
Custom($TEXTAREA_CMD_PASTE) None Paste the current content of the buffer
Custom($TEXTAREA_CMD_SEARCH_BACK) None Go to the previous search match
Custom($TEXTAREA_CMD_SEARCH_FORWARD) None Go to the next search match
Cancel None Delete next char
Delete None Delete previous char
GoTo(Begin) None Go to the head of the line
GoTo(End) None Go to the end of the line
Move(Down) None Move to the line below
Move(Up) None Move to the line above
Move(Left) None Move cursor to the left
Move(Right) None Move cursor to the right
Scroll(Up) None Move by scroll_step lines up
Scroll(Down) None Move by scroll_step lines down
Type(ch) None Type a char in the editor
Submit Submit Get current lines

❗ Paste command is supported only if the clipboard feature is enabled

State: the state returned is a Vec(String) containing the lines in the text area.


  • Borders(Borders): set borders properties for component
  • Custom($TREE_IDENT_SIZE, Size): Set space to render for each each depth level
  • Custom($TEXTAREA_MAX_HISTORY, Payload(One(Usize))): Set the history steps to record
  • Custom($TEXTAREA_CURSOR_STYLE, Style): Set the cursor style
  • Custom($TEXTAREA_CURSOR_LINE_STYLE, Style): Set the current line style
  • Custom($TEXTAREA_FOOTER_FMT, Payload(Tup2(Str, Style))): Set the format and the style for the footer bar
  • Custom($TEXTAREA_LINE_NUMBER_STYLE, Style): set the style for the line number
  • Custom($TEXTAREA_STATUS_FMT, Payload(Tup2(Str, Style))): Set the format and the style for the status bar
  • Custom($TEXTAREA_SEARCH_PATTERN, String: Set search pattern
  • Custom($TEXTAREA_SEARCH_STYLE, Style: Set search style
  • Style(Style): Set the general style for the textarea
  • Custom($TEXTAREA_TAB_SIZE, Size): Set the tab size to display
  • FocusStyle(Style): inactive style
  • ScrollStep(Length): Defines the maximum amount of rows to scroll
  • Title(Title): Set box title

The status and footer bars support a special syntax. The following keys can be inserted into the string:

  • {ROW}: current row
  • {COL}: current column

Documentation 📚

The developer documentation can be found on Rust Docs at https://docs.rs/tui-realm-textarea

Contributing and issues 🤝🏻

Contributions, bug reports, new features and questions are welcome! 😉 If you have any question or concern, or you want to suggest a new feature, or you want just want to improve tui-realm, feel free to open an issue or a PR.

Please follow our contributing guidelines

Changelog ⏳

View tui-realm-textarea's changelog HERE

Support the developer ☕

If you like tui-realm and you're grateful for the work I've done, please consider a little donation 🥳

You can make a donation with one of these platforms:

ko-fi PayPal

License 📃

tui-realm-textarea is licensed under the MIT license.

You can read the entire license HERE


~250K SLoC