harpocrates_musik_player

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

main.rs (1140B)


      1 mod app;
      2 mod audio;
      3 mod library;
      4 mod setting;
      5 mod ui;
      6 
      7 use std::{io, time::Duration};
      8 
      9 use crossterm::{
     10     ExecutableCommand,
     11     event::{self, Event, KeyEventKind},
     12     terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode},
     13 };
     14 use ratatui::{Terminal, prelude::CrosstermBackend};
     15 
     16 use crate::app::App;
     17 
     18 fn main() -> Result<(), Box<dyn std::error::Error>> {
     19     enable_raw_mode()?;
     20     io::stdout().execute(EnterAlternateScreen)?;
     21     let mut terminal = Terminal::new(CrosstermBackend::new(io::stdout()))?;
     22 
     23     let mut app = App::new()?;
     24 
     25     loop {
     26         terminal.draw(|f| {
     27             ui::render(f, &mut app);
     28         })?;
     29 
     30         if event::poll(Duration::from_millis(100))? {
     31             if let Event::Key(key) = event::read()?
     32                 && key.kind == KeyEventKind::Press
     33             {
     34                 let should_quit = app.handle_key_event(key)?;
     35                 if should_quit {
     36                     break;
     37                 }
     38             }
     39         }
     40     }
     41 
     42     io::stdout().execute(LeaveAlternateScreen)?;
     43     disable_raw_mode()?;
     44     Ok(())
     45 }