summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs31
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 {