Random stuff, testing things, and so on.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
1.9 KiB

use crossterm::event::KeyCode;
use crossterm::event::KeyEventKind;
use crossterm::terminal::disable_raw_mode;
use crossterm::terminal::enable_raw_mode;
use ratatui::prelude::Backend;
use ratatui::prelude::Constraint;
use ratatui::prelude::CrosstermBackend;
use ratatui::prelude::Direction;
use ratatui::prelude::Layout;
use ratatui::style::Color;
use ratatui::style::Modifier;
use ratatui::style::Style;
use ratatui::widgets::List;
use ratatui::widgets::ListItem;
use ratatui::Frame;
use ratatui::Terminal;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
enable_raw_mode()?;
let mut stdout = std::io::stdout();
let backend = CrosstermBackend::new(stdout);
let mut terminal = Terminal::new(backend)?;
let res = run_app(&mut terminal);
// finish
disable_raw_mode()?;
Ok(())
}
fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> std::io::Result<()> {
loop {
terminal.draw(|f| ui(f))?;
match crossterm::event::read()? {
crossterm::event::Event::Key(key) => {
if key.kind == KeyEventKind::Press {
match key.code {
KeyCode::Esc => break,
_ => (),
}
}
}
_ => (),
}
}
Ok(())
}
fn ui<B: Backend>(f: &mut Frame<B>) {
let items = [
ListItem::new("Item 1"),
ListItem::new("Item 2"),
ListItem::new("Item 3"),
];
let block = Layout::default()
.direction(Direction::Horizontal)
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref())
.split(f.size());
let list = List::new(items)
.highlight_style(
Style::default()
.bg(Color::LightGreen)
.add_modifier(Modifier::BOLD),
)
.highlight_symbol("> ");
f.render_widget(list, block[0]);
}