Krolyxon
Commit 0c8cfe3

rmptuisrcmain.rs

40 lines · 1.2 KB · Rust

1use rmptui::app::App;
2use rmptui::app::AppResult;
3use rmptui::event::event::Event;
4use rmptui::event::event::EventHandler;
5use rmptui::event::handler;
6use rmptui::tui;
7use std::env;
8use std::io;
9use ratatui::prelude::*;
10
11pub type Result<T> = core::result::Result<T, Error>;
12pub type Error = Box<dyn std::error::Error>;
13
14fn main() -> AppResult<()> {
15 let env_host = env::var("MPD_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
16 let env_port = env::var("MPD_PORT").unwrap_or_else(|_| "6600".to_string());
17 let mut app = App::builder(format!("{}:{}", env_host, env_port).as_str())?;
18
19 let backend = CrosstermBackend::new(io::stderr());
20 let terminal = Terminal::new(backend)?;
21 let events = EventHandler::new(1000);
22
23 let mut tui = tui::Tui::new(terminal, events);
24 tui.init()?;
25
26 // initial directory read
27 app.browser.update_directory(&mut app.conn).unwrap();
28
29 while app.running {
30 tui.draw(&mut app)?;
31 match tui.events.next()? {
32 Event::Tick => app.tick(),
33 Event::Key(key_event) => handler::handle_key_events(key_event, &mut app)?,
34 Event::Mouse(_) => {}
35 Event::Resize(_, _) => {}
36 }
37 }
38
39 Ok(())
40}