Krolyxon
Commit 1bf5805

rmptuisrcmain.rs

44 lines · 1.3 KB · Rust

1use ratatui::prelude::*;
2use rmptui::app::App;
3use rmptui::app::AppResult;
4use rmptui::event::event::Event;
5use rmptui::event::event::EventHandler;
6use rmptui::event::handler;
7use rmptui::tui;
8use std::env;
9use std::io;
10
11fn main() -> AppResult<()> {
12 // Connection
13 let env_host = env::var("MPD_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
14 let env_port = env::var("MPD_PORT").unwrap_or_else(|_| "6600".to_string());
15 let url = format!("{}:{}", env_host, env_port);
16 let mut app = App::builder(&url)?;
17
18 // UI
19 let backend = CrosstermBackend::new(io::stderr());
20 let terminal = Terminal::new(backend)?;
21 let events = EventHandler::new(1000);
22 let mut tui = tui::Tui::new(terminal, events);
23 tui.init()?;
24
25 // initial directory read
26 app.browser.update_directory(&mut app.conn)?;
27
28 // initially set the queue's highlighted item to the current playing item
29 if let Ok(item) = app.conn.conn.currentsong() {
30 app.queue_list.index = item.unwrap_or_default().place.unwrap_or_default().pos as usize;
31 }
32
33 while app.running {
34 tui.draw(&mut app)?;
35 match tui.events.next()? {
36 Event::Tick => app.tick()?,
37 Event::Key(key_event) => handler::handle_key_events(key_event, &mut app)?,
38 Event::Mouse(_) => {}
39 Event::Resize(_, _) => {}
40 }
41 }
42
43 Ok(())
44}