extern crate tui; extern crate rustbox; use std::error::Error; use rustbox::Key; use tui::Terminal; use tui::backend::RustboxBackend; use tui::widgets::{Widget, Block, border, Paragraph}; use tui::layout::{Group, Direction, Size}; use tui::style::{Style, Color, Modifier}; fn main() { let mut terminal = Terminal::new(RustboxBackend::new().unwrap()).unwrap(); terminal.clear().unwrap(); terminal.hide_cursor().unwrap(); draw(&mut terminal); loop { match terminal.backend().rustbox().poll_event(false) { Ok(rustbox::Event::KeyEvent(key)) => { if key == Key::Char('q') { break; } } Err(e) => panic!("{}", e.description()), _ => {} }; draw(&mut terminal); } terminal.show_cursor().unwrap(); } fn draw(t: &mut Terminal) { let size = t.size().unwrap(); Group::default() .direction(Direction::Vertical) .sizes(&[Size::Percent(100)]) .render(t, &size, |t, chunks| { Paragraph::default() .block(Block::default() .title("Rustbox backend") .title_style(Style::default() .fg(Color::Yellow) .modifier(Modifier::Bold)) .borders(border::ALL) .border_style(Style::default().fg(Color::Magenta))) .text("It {yellow works}!") .render(t, &chunks[0]); }); t.draw().unwrap(); }