Something went wrong. Try again.
A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869use std::{ env, process::{Command, Stdio},};
use anyhow::Error;
pub mod api { #[path = ""] pub mod rockbox {
#[path = "rockbox.v1alpha1.rs"] pub mod v1alpha1; }}
pub fn install_rockboxd() -> Result<(), Error> { let mut child = Command::new("sh") .arg("-c") .arg("type rockboxd > /dev/null 2>&1 || curl -fsSL https://raw.githubusercontent.com/tsirysndr/rockboxd/HEAD/install.sh | bash") .stdin(Stdio::inherit()) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .spawn()?; child.wait()?; Ok(())}
pub fn wait_for_rockboxd(port: u32, timeout: Option<u32>) -> Result<(), Error> { let cmd = format!( "rockbox run -A npm:wait-port localhost:{} -t {}", port, timeout.unwrap_or(60) * 1000 ); let mut child = Command::new("sh") .arg("-c") .arg(cmd) .stdin(Stdio::null()) .stdout(Stdio::null()) .stderr(Stdio::null()) .spawn()?; let status = child.wait()?;
if !status.success() { return Err(Error::msg("Timeout waiting for Rockbox server")); }
Ok(())}
pub fn setup_pkgx() -> Result<(), Error> { let path = format!( "{}:{}", env::var("PATH")?, format!("{}/.local/bin", env::var("HOME")?) ); env::set_var("PATH", &path); let mut child = Command::new("sh") .arg("-c") .arg("type pkgx > /dev/null 2>&1 || curl -fsS https://pkgx.sh | sh") .stdin(Stdio::inherit()) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .spawn()?; child.wait()?;
Ok(())}