Krolyxon
Commit 3d569cb

rmptuisrcmain.rs

42 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 // Connection
16 let env_host = env::var("MPD_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
17 let env_port = env::var("MPD_PORT").unwrap_or_else(|_| "6600".to_string());
18 let url = format!("{}:{}", env_host, env_port);
19 let mut app = App::builder(&url)?;
20
21 // UI
22 let backend = CrosstermBackend::new(io::stderr());
23 let terminal = Terminal::new(backend)?;
24 let events = EventHandler::new(1000);
25 let mut tui = tui::Tui::new(terminal, events);
26 tui.init()?;
27
28 // initial directory read
29 app.browser.update_directory(&mut app.conn).unwrap();
30
31 while app.running {
32 tui.draw(&mut app)?;
33 match tui.events.next()? {
34 Event::Tick => app.tick(),
35 Event::Key(key_event) => handler::handle_key_events(key_event, &mut app)?,
36 Event::Mouse(_) => {}
37 Event::Resize(_, _) => {}
38 }
39 }
40
41 Ok(())
42}