1
Fork 0
funring/src/main.rs

49 lines
1.3 KiB
Rust

use mpris::PlayerFinder;
use anyhow::Result;
use tray_item::IconSource;
use tray_item::TrayItem;
fn main() -> Result<()> {
let pf = PlayerFinder::new()?;
let players = pf.find_all()?;
let mut tracker = players[0].track_progress(1000/20)?;
let icon = IconSource::Data{data: gen_icon(0.0), height: RES, width: RES};
let mut tray = TrayItem::new("funring", icon)?;
println!("Hello, {}!", players[0].identity());
loop {
let tick = tracker.tick();
let elapsed = tick.progress.position().as_secs();
let total = tick.progress.length().unwrap().as_secs();
println!("{elapsed}s/{total}s!");
let prog = elapsed as f32 / total as f32;
println!("{prog}");
tray.set_icon(
IconSource::Data{data: gen_icon(prog), height: RES, width: RES}
)?;
}
}
const RES: i32 = 32;
const LEN: usize = (RES*RES) as usize;
fn gen_icon(prog: f32) -> Vec<u8> {
let mut icon = Vec::with_capacity(LEN);
for pix in 0..(LEN) {
let x = pix % RES as usize;
let y = pix / RES as usize;
icon.push(1);
icon.push(
if prog / 256.0 > x as f32 / RES as f32 {
255
} else {
0
});
icon.push(0);
icon.push(0);
}
icon
}