use std::io; use color_eyre::Result; use crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }; use ratatui::{prelude::*, widgets::*}; fn main() -> Result<()> { color_eyre::install()?; enable_raw_mode()?; io::stdout().execute(EnterAlternateScreen)?; let mut terminal = Terminal::new(CrosstermBackend::new(io::stdout()))?; let result = run(&mut terminal); disable_raw_mode()?; io::stdout().execute(LeaveAlternateScreen)?; result } fn run(terminal: &mut Terminal>) -> Result<()> { loop { terminal.draw(ui)?; if let Event::Key(key) = event::read()? { if key.kind != KeyEventKind::Press { continue; } match key.code { KeyCode::Char('q') => return Ok(()), _ => {} } } } } fn ui(frame: &mut Frame) { let area = frame.area(); let block = Block::bordered() .title(" ui-agregator ") .title_alignment(Alignment::Center) .border_type(BorderType::Rounded); let text = Paragraph::new("press q to quit") .alignment(Alignment::Center) .block(block); frame.render_widget(text, area); }