gyscos/cursive
gyscos/cursive has 4,860 GitHub stars and 272 forks. GitHot measured 0 stars in 24 hours and -1 in 7 days. Last checked 2026-11-08 03:08 UTC. Last push 2026-11-01.
So werden diese Zahlen gemessen
Eine Bibliothek für textbasierte Benutzeroberflächen für die Programmiersprache Rust
Gemessener Sternzuwachs
- in 24h
- 0
- in 7 days
- -1
- in 15 days
- Verlauf wird gesammelt
- in 1 month
- Verlauf wird gesammelt
Nettoänderungen in überlappenden Zeiträumen, keine Tagessummen. Fehlende Messwerte bleiben leer. Sterne zeigen Interesse, nicht Qualität.
README.md
OriginalCursive
Cursive is a TUI (Text User Interface) library for rust. It uses the crossterm backend by default, but other backends are available.
It allows you to build rich user interfaces for terminal applications.
Documentation
It is designed to be safe and easy to use:
[dependencies]
cursive = "0.21"
Or to use the latest git version:
[dependencies]
cursive = { git = "https://github.com/gyscos/cursive" }
use cursive::views::{Dialog, TextView};
fn main() {
// Creates the cursive root - required for every application.
let mut siv = cursive::default();
// Creates a dialog with a single "Quit" button
siv.add_layer(Dialog::around(TextView::new("Hello Dialog!"))
.title("Cursive")
.button("Quit", |s| s.quit()));
// Starts the event loop.
siv.run();
}
Check out the other examples to get these results, and more:
(Colors may depend on your terminal configuration.)
Tutorials
These tutorials may help you get started with cursive:
Third-party views
Here are a few crates implementing new views for you to use:
- cursive-aligned-view: A view wrapper which aligns child views.
- cursive-async-view: A loading-screen wrapper.
- cursive_calendar_view: A basic calendar view implementation.
- cursive-flexi-logger-view: An alternative debug view using flexi_logger.
- cursive_hexview: A simple hexview.
- cursive-hjkl: Wraps any view to use Vim-like
hjklcontrols. - cursive-image: A graphical image view. Supported formats include PNG, GIF, JPEG, SVG, and PDF.
- cursive-markup: A view that renders HTML or other markup.
- cursive-multiplex: A tmux like multiplexer.
- cursive-spinner-view: A spinner view.
- cursive-split-panel: A split panel view with a movable divider.
- cursive_table_view: A basic table view component.
- cursive-tabs: Tabs.
- cursive-tree: A tree view implementation.
Showcases
Here are some cool applications using cursive:
- RustyChat: Chat client made using Rust and Cursive.
- checkline: Checkbox line picker from stdin to stdout.
- clock-cli: A clock with stopwatch and countdown timer functionalities.
- fui: Add CLI & form interface to your program.
- game2048-rs: a tui game2048 using Rust and cursive.
- git-branchless: Branchless workflow for Git.
- grin-tui: Minimal implementation of the MimbleWimble protocol.
- kakikun: A paint and ASCII art application for the terminal.
- launchk: Manage launchd agents and daemons on macOS.
- markline: Marker-based line picker from stdin to stdout.
- mythra: CLI to search for music.
- ncspot: Cross-platform ncurses Spotify client.
- rbmenu-tui: A TUI for bookmark management.
- retris: A simple implementation of the classic tetris game.
- ripasso: A simple password manager written in Rust.
- rusty-man: Browse rustdoc documentation.
- saci-rs: Simple API Client Interface.
- so: A terminal interface for Stack Overflow.
- sudoku-tui: Play sudoku on the command line.
- tap: An audio player for the terminal with fuzzy finder.
- ttyloop: Clone of the mobile game Loop.
- wiki-tui: A simple and easy to use Wikipedia Text User Interface
- glues: A simple note-taking app with Git, CSV, and JSON support
Goals
- Ease of use. Simple apps should be simple. Complex apps should be manageable.
- Linux TTY Compatibility. Colors may suffer, and UTF-8 may be too much, but most features must work properly on a Linux TTY.
- Flexibility. This library should be able to handle simple UI scripts, complex real-time applications, or even games.
- In particular, it tries to have enough features to recreate these kind of tools:
Compatibility
First off, terminals are messy. A small set of features is standard, but beyond that, almost every terminal has its own implementation.
Output
- Colors: the basic 8-colors palette should be broadly supported. User-defined colors is not supported in the raw linux TTY, but should work in most terminals, although it's still kinda experimental.
- UTF-8: Currently Cursive really expects a UTF-8 locale. It may eventually get patched to support window borders on other locales, but it's not a priority. There is initial support for wide characters. RTL support is planned, but still very early.
Input
- The
key_codesexample can be a useful tool to see how the library reacts to various key presses. - Keep in mind that if the terminal has shortcuts registered, they probably won't be transmitted to the app.
- UTF-8 input should work fine in a unicode-enabled terminal emulator, but raw linux TTY may be more capricious.
Contributing
Alternatives
See also ratatui - and a small comparison page.
Ähnliche Projekte entdecken
codecrafters-io/build-your-own-x
Meistere das Programmieren, indem du deine Lieblingstechnologien von Grund auf neu erschaffst.
560,925 Sternepublic-apis/public-apis
Eine gemeinschaftliche Liste kostenloser APIs
497,169 Sternemorluto/rea
Mit Agenten alles per Reverse Engineering untersuchen, vom Verhalten der Anwendung bis hin zu nativen Binärdateien.
442,375 Sterneopenclaw/openclaw
Die KI, die wirklich Dinge erledigt. Jedes Betriebssystem, jede Plattform. Auf die Hummer-Art. 🦞
394,177 Sterne






