sys-resource-manager 0.1.0

A system resource manager displaying system info.
use eframe::egui;
use sysinfo::System;

pub fn show_process_info(sys: &System, top_procs: usize, ui: &mut egui::Ui) {
    let mut processes: Vec<_> = sys.processes().values().collect();
    processes.sort_by(|a, b| b.cpu_usage().partial_cmp(&a.cpu_usage()).unwrap());

    ui.label(format!("Total Active Processes: {}", processes.len()));
    ui.label(format!("Top {} Processes by CPU usage:", top_procs));

    let num_cores = sys.cpus().len() as f32;
    for (i, process) in processes.iter().take(top_procs).enumerate() {
        let cpu_usage = process.cpu_usage() / num_cores;
        let mem_bytes = process.memory();
        let (mem_value, mem_unit) = if mem_bytes >= 1024 * 1024 * 1024 {
            (mem_bytes as f64 / 1024.0 / 1024.0 / 1024.0, "GB")
        } else {
            (mem_bytes as f64 / 1024.0 / 1024.0, "MB")
        };

        ui.label(
            egui::RichText::new(format!(
                "  {}. {:<25} CPU: {:>5.2}% | Mem: {:>8.2} {}",
                i + 1,
                process.name(),
                cpu_usage,
                mem_value,
                mem_unit
            ))
            .monospace(),
        );
    }
    ui.separator();
}