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();
}