57 lines
1.3 KiB
Rust
57 lines
1.3 KiB
Rust
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<CrosstermBackend<io::Stdout>>) -> 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);
|
|
}
|