Something went wrong. Try again.
Firmware for a USB screen displaying system stats
Something went wrong. Try again.
1.9 kB · 71 lines
Rust
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172use color_eyre::eyre;use sysinfo::{Components, Disk, Disks, System};
pub struct SystemInfo { system: System, disks: Disks, components: Components,}
impl SystemInfo { pub fn new() -> Self { Self { system: System::new(), disks: Disks::new_with_refreshed_list(), components: Components::new_with_refreshed_list(), } }
pub fn refresh(&mut self) -> eyre::Result<()> { self.system.refresh_cpu_usage(); self.system.refresh_memory();
self.get_root_disk_mut()?.refresh(); self.components.refresh(true);
Ok(()) }
fn get_root_disk_mut(&mut self) -> eyre::Result<&mut Disk> { self.disks .iter_mut() .find(|disk| disk.mount_point() == "/") .ok_or(eyre::eyre!("No root disk found")) }
fn get_root_disk(&self) -> eyre::Result<&Disk> { self.disks .iter() .find(|disk| disk.mount_point() == "/") .ok_or(eyre::eyre!("No root disk found")) }
pub fn disk_usage(&self) -> eyre::Result<f32> { let root_disk = self.get_root_disk()?;
let value = (1.0 - (root_disk.available_space() as f64 / root_disk.total_space() as f64)) as f32; Ok(value) }
pub fn cpu_usage(&self) -> f32 { self.system.global_cpu_usage() / 100.0 }
pub fn max_temp(&self) -> f32 { self.components .iter() .filter(|component| component.label().starts_with("coretemp")) .map(|component| component.temperature().unwrap_or(0.0)) .max_by(|a, b| a.total_cmp(b)) .unwrap_or(0.0) }
pub fn memory_usage(&self) -> f32 { (self.system.used_memory() as f64 / self.system.total_memory() as f64) as f32 }
pub fn get_uptime(&self) -> u64 { System::uptime() }}