use xvfb-run to create headless anki if no running instance is available
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
toolchain = fenix.packages.x86_64-linux.minimal.toolchain;
|
||||
in {
|
||||
devShells.x86_64-linux.default = pkgs.mkShell {
|
||||
buildInputs = [toolchain];
|
||||
buildInputs = [toolchain pkgs.xvfb-run];
|
||||
shellHook = ''
|
||||
export RUSTUP_TOOLCHAIN=${toolchain}
|
||||
'';
|
||||
@@ -30,7 +30,12 @@
|
||||
cargo = toolchain;
|
||||
rustc = toolchain;
|
||||
}).buildPackage {
|
||||
nativeBuildInputs = [pkgs.makeWrapper];
|
||||
src = ./.;
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/anki-cli \
|
||||
--prefix PATH : ${pkgs.xvfb-run}/bin
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
31
src/main.rs
31
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 {
|
||||
|
||||
Reference in New Issue
Block a user