[Fork] A Text User Interface library for the Rust programming language
Go to file
Alexandre Bury c8136c67e0 Add focus system
May need to add a direction to take_focus
2015-05-19 15:54:11 -07:00
assets Add lorem example with long text and line wrapping 2015-05-18 11:36:15 -07:00
examples Add lorem example with long text and line wrapping 2015-05-18 11:36:15 -07:00
src Add focus system 2015-05-19 15:54:11 -07:00
.gitignore First commit 2015-05-09 12:18:31 -07:00
Cargo.toml Add lorem example with long text and line wrapping 2015-05-18 11:36:15 -07:00
Readme.md Add ideal applications to readme 2015-05-19 13:54:50 -07:00

Cursive

Cursive is a ncurses-based TUI (Text User Interface) library for rust. It is based on jeaye's ncurses-rs.

It is designed to be safe and easy to use:

extern crate cursive;

use cursive::Cursive;
use cursive::view::{Dialog,TextView};

fn main() {
    let mut siv = Cursive::new();

    // Create a popup window with a "Ok" button that quits the application
    siv.add_layer(Dialog::new(TextView::new("Hello world!"))
                    .button("Quit", |s, _| s.quit()));

    // Starts the event loop.
    siv.run();
}

The goal is to be flexible enough, so that recreating these kind of tools would - relatively - easy (at least on the layout front):

A few notes :

  • The main focus point is not performance. This is a simple layout library, guys, not compiz piped into libcaca. Unless you are running it on your microwave's microcontroller, it's not going to be slow.
  • The library is single-threaded. Thus, callback methods are blocking - careful what you're doing in there! Feel free to use threads on your side, though.
  • This goal is not to have an equivalent to every ncurses function. You can access the underlying ncurses window when creating your own custom views, so you can do what you want with that, but the main library will probably only use a subset of the ncurses features.