diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 5eb84b4..15e12dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,12 @@ use crossterm::{ terminal::*, }; use nanohtml2text::html2text; -use std::io::stdout; +use std::{ + io::stdout, + process::{Command, Stdio}, + thread, + time::Duration, +}; const GOOD: char = '3'; const AGAIN: char = '1'; @@ -22,7 +27,29 @@ fn main() { fn init(anki: &AnkiClient) { clear_screen(); - let decks = anki.request(DeckNamesRequest {}).unwrap(); + let mut decks = anki.request(DeckNamesRequest {}); + if let Err(_) = decks { + clear_screen(); + display_text("initializing headless anki..."); + Command::new("bash") + .arg("-c") + .arg("QT_QPA_PLATFORM=xcb xvfb-run -a anki") + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn() + .unwrap(); + loop { + thread::sleep(Duration::from_secs(1)); + display_text("."); + decks = anki.request(DeckNamesRequest {}); + if let Ok(_) = decks { + clear_screen(); + break; + } + } + } + let decks = decks.unwrap(); for (index, title) in decks.clone().into_iter().enumerate() { // 0th index is Default, which is not predictable if index > 0 { |
