sys-resource-manager 0.1.0

A system resource manager displaying system info.
use clap::Parser;
use std::time::Duration;
use eframe::egui;

mod panels;
mod app;
mod args; 

use app::SysApp;
use args::Args;

/// Simple System Resource Manager CLI
fn main() {
    let args = Args::parse();

    // Determine GUI refresh interval
    let gui_interval = Duration::from_secs(args.interval);

    // Determine which sections to show
    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();

                // Set initial theme text color
                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.");
    }
}