A tiny, fast terminal file manager in C for browsing, batch renaming, disk usage analysis and launching apps.
gyscos/cursive
A Rust library for building rich text user interfaces (TUI) in terminal applications, with a crossterm backend by default.
- Stars
- 4,857
- Forks
- 272
- Open issues
- 207
- Last commit
- 27 days ago
What is it?
Cursive is a Text User Interface library for Rust that lets developers build interactive terminal applications with windows, dialogs, menus and layouts. It uses the crossterm backend by default, and other backends are available.
Applications are assembled from ready-made views such as dialogs, text views, and selection lists, and the library runs an event loop that dispatches keyboard input and callbacks. Its stated goals include ease of use for simple apps and enough flexibility for complex real-time programs or games, with most features working on a plain Linux TTY.
The project also has a third-party ecosystem of extra views, such as tables, tabs, trees, markup rendering, and a Vim-like key wrapper.
Key features
- 01Builds terminal UIs from ready-made views such as dialogs, text views and lists.
- 02Uses the crossterm backend by default, with other backends available.
- 03Provides an event loop that handles keyboard input and callbacks.
- 04Supports basic colors and UTF-8 output, with initial wide-character support.
- 05Has a set of third-party view crates for tables, tabs, trees and more.
Use cases
- Writing interactive command-line tools that need menus, forms or dialogs.
- Building terminal dashboards or configuration tools similar to menuconfig or nmtui.
- Creating simple terminal games in Rust.
Quick start
- 1
Add the cursive crate to your Cargo.toml
cargo add cursive - 2
Create a root and run a simple dialog app in main.rs
Things to know
- Cursive expects a UTF-8 locale, so raw Linux TTYs may have limited support.
- Right-to-left text support is still very early.
Topics
FAQ
- What is cursive?
- A Rust library for building rich text user interfaces (TUI) in terminal applications, with a crossterm backend by default. Cursive is a Text User Interface library for Rust that lets developers build interactive terminal applications with windows, dialogs, menus and layouts. It uses the crossterm backend by default, and other backends are available.
- Is cursive free to use? What license does it have?
- cursive is open source under the MIT license. Check the license terms before using it in commercial products.
- Is cursive still maintained?
- Actively maintained. The last commit to cursive was on Sep 25, 2026.
- What can I use cursive for?
- Writing interactive command-line tools that need menus, forms or dialogs. Building terminal dashboards or configuration tools similar to menuconfig or nmtui. Creating simple terminal games in Rust.
- How do I install cursive?
- Add the cursive crate to your Cargo.toml: cargo add cursive Create a root and run a simple dialog app in main.rs
- Where can I get cursive?
- The source code and installation instructions are on GitHub: https://github.com/gyscos/cursive
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A text-mode, ncurses-based terminal interface for browsing Git repositories and staging changes by chunk.
A Python framework for building terminal and web user interfaces with a simple, component-based API.
A terminal file manager written in Rust, built on non-blocking async I/O with image preview, Lua plugins and a vim-like interface.
Grok Build is a terminal AI coding agent from SpaceXAI with a full-screen TUI that edits files, runs shell commands and searches the web.
A Rust crate for building terminal user interfaces (TUIs) with reusable widgets and a simple rendering model.