use clap::Parser;
use std::time::Duration;
use eframe::egui;
mod panels;
mod app;
mod args;
use app::SysApp;
use args::Args;
fn main() {
let args = Args::parse();
let gui_interval = Duration::from_secs(args.interval);
let show_os = args.os;
let show_cpu = args.cpu;
let show_mem = args.mem;
let show_swap = args.swap;
let show_uptime = args.uptime;
let show_disk = args.disk;
let show_procs = args.procs;
let top_procs = args.top_procs;
let any_gui_flag = show_os || show_cpu || show_mem || show_swap ||
show_uptime || show_disk || show_procs;
if any_gui_flag {
let options = eframe::NativeOptions::default();
let _ = eframe::run_native(
"System Resource Manager GUI",
options,
Box::new(move |_cc| {
let mut sys = sysinfo::System::new_all();
sys.refresh_all();
let disks = sysinfo::Disks::new_with_refreshed_list();
let mut style = (*_cc.egui_ctx.style()).clone();
style.visuals.override_text_color = Some(if _cc.egui_ctx.style().visuals.dark_mode {
egui::Color32::WHITE
} else {
egui::Color32::BLACK
});
_cc.egui_ctx.set_style(style);
Box::new(SysApp {
sys,
refresh_interval: gui_interval,
last_refresh: std::time::Instant::now(),
show_os,
show_cpu,
show_mem,
show_swap,
show_uptime,
show_disk,
disks,
show_procs,
top_procs,
})
}),
);
} else {
println!("No options provided. Use --help to see available flags.");
}
}