Browse and listen to thousands of radio stations across the globe right from your terminal ๐ŸŒŽ ๐Ÿ“ป ๐ŸŽตโœจ
radio rust tokio web-radio command-line-tool tui
at main 1.2 kB view raw
1use std::io::{self, stderr, stdout, Stdout}; 2 3use crossterm::{ 4 event::{KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags}, 5 execute, 6 terminal::*, 7}; 8use ratatui::prelude::*; 9 10/// A type alias for the terminal type used in this application 11pub type Tui = Terminal<CrosstermBackend<Stdout>>; 12 13/// Initialize the terminal 14pub fn init() -> io::Result<Tui> { 15 execute!(stdout(), EnterAlternateScreen)?; 16 execute!(stderr(), EnterAlternateScreen)?; 17 if let Ok(true) = crossterm::terminal::supports_keyboard_enhancement() { 18 execute!( 19 stdout(), 20 PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES) 21 )?; 22 } 23 24 enable_raw_mode()?; 25 26 Terminal::new(CrosstermBackend::new(stdout())) 27} 28 29/// Restore the terminal to its original state 30pub fn restore() -> io::Result<()> { 31 execute!(stdout(), LeaveAlternateScreen)?; 32 execute!(stderr(), LeaveAlternateScreen)?; 33 if let Ok(true) = crossterm::terminal::supports_keyboard_enhancement() { 34 execute!(stdout(), PopKeyboardEnhancementFlags)?; 35 } 36 37 disable_raw_mode()?; 38 39 Ok(()) 40}