diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 73c5d0a8..c9c0f68b 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -10,7 +10,7 @@ use crate::{ use anyhow::Result; use tauri::{ menu::CheckMenuItem, - tray::{MouseButton, MouseButtonState, TrayIconEvent}, + tray::{MouseButton, MouseButtonState, TrayIconEvent, TrayIconId}, }; use tauri::{ menu::{MenuEvent, MenuItem, PredefinedMenuItem, Submenu}, @@ -20,8 +20,9 @@ use tauri::{AppHandle, Manager}; pub struct Tray {} impl Tray { - pub fn update_systray(app_handle: &AppHandle) -> Result<()> { - let tray = app_handle.tray_by_id("main").unwrap(); + pub fn create_systray(app_handle: &AppHandle) -> Result<()> { + let tray_incon_id = TrayIconId::new("main"); + let tray = app_handle.tray_by_id(&tray_incon_id).unwrap(); tray.on_tray_icon_event(|tray, event| { let tray_event = { Config::verge().latest().tray_event.clone() }; @@ -50,6 +51,8 @@ impl Tray { .. } = event { + let _ = tray.set_visible(false); + let app = tray.app_handle(); match tray_event.as_str() { "system_proxy" => feat::toggle_system_proxy(), @@ -57,10 +60,11 @@ impl Tray { "main_window" => resolve::create_window(app), _ => {} } + let _ = tray.set_visible(true); } }); + println!("{:?}", tray.id()); tray.on_menu_event(on_menu_event); - Ok(()) } diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index 2f06aebf..80c271a0 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -85,7 +85,7 @@ pub async fn resolve_setup(app: &mut App) { server::embed_server(app.app_handle()); log::trace!("init system tray"); - log_err!(tray::Tray::update_systray(&app.app_handle())); + log_err!(tray::Tray::create_systray(&app.app_handle())); let silent_start = { Config::verge().data().enable_silent_start }; if !silent_start.unwrap_or(false) {