diff --git a/src-tauri/src/commands/monitor.rs b/src-tauri/src/commands/monitor.rs index df0703f..a5faab4 100644 --- a/src-tauri/src/commands/monitor.rs +++ b/src-tauri/src/commands/monitor.rs @@ -200,4 +200,4 @@ pub fn is_monitor_running() -> bool { let state = get_monitor(); let guard = state.blocking_lock(); guard.running -} \ No newline at end of file +} diff --git a/src-tauri/src/commands/traceroute.rs b/src-tauri/src/commands/traceroute.rs index e08cf11..dd43d7f 100644 --- a/src-tauri/src/commands/traceroute.rs +++ b/src-tauri/src/commands/traceroute.rs @@ -60,4 +60,3 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> { Ok(()) } - diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 828f0e4..e296478 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -3,11 +3,52 @@ mod models; mod net; mod scanner; -use tauri::Manager; use tauri::menu::{Menu, MenuItem}; use tauri::tray::TrayIconBuilder; +use tauri::Manager; #[cfg_attr(mobile, tauri::mobile_entry_point)] +#[cfg(target_os = "windows")] +fn register_aumid() { + let app_id = "io.argus.app"; + let key_path = format!("HKCU\\Software\\Classes\\AppUserModelId\\{}", app_id); + + // Check if already registered + let check = std::process::Command::new("reg") + .args(["query", &key_path]) + .output(); + + if let Ok(o) = check { + if o.status.success() { + tracing::debug!("AUMID already registered"); + return; + } + } + + // Not registered, create it + let output = std::process::Command::new("reg") + .args([ + "add", + &key_path, + "/v", "DisplayName", + "/t", "REG_SZ", + "/d", "Argus", + "/f", + ]) + .output(); + + match output { + Ok(o) if o.status.success() => { + tracing::debug!("AUMID registered successfully"); + } + Ok(o) => { + tracing::warn!("AUMID registration failed: {}", String::from_utf8_lossy(&o.stderr)); + } + Err(e) => { + tracing::warn!("Failed to run reg command: {}", e); + } + } +} pub fn run() { tracing_subscriber::fmt() .with_env_filter( @@ -30,7 +71,8 @@ pub fn run() { let show = MenuItem::with_id(app, "show", "Show Argus", true, None::<&str>)?; let quit = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; let menu = Menu::with_items(app, &[&show, &quit])?; - + #[cfg(target_os = "windows")] + register_aumid(); let _tray = TrayIconBuilder::new() .icon(app.default_window_icon().unwrap().clone()) .tooltip("Argus - Network Scanner") @@ -97,4 +139,4 @@ pub fn run() { ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); -} \ No newline at end of file +} diff --git a/src/main.js b/src/main.js index f4ef6d7..3c3c389 100644 --- a/src/main.js +++ b/src/main.js @@ -1109,7 +1109,7 @@ const monitorTab = (() => { var count = Object.keys(entries).length; notify('Argus Monitor Active', 'The monitor is still running with ' + count + ' hosts. Close the monitor to stop pinging.'); - }, 15 * 60 * 1000); + }, 15* 60 * 1000); } catch (err) { console.error('Monitor start error:', err); setRunning(false);