diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 50f266ea..b621c29e 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -1,4 +1,5 @@ use once_cell::sync::OnceCell; +use tauri::tray::TrayIconBuilder; #[cfg(target_os = "macos")] pub mod speed_rate; use crate::module::mihomo::Rate; @@ -22,10 +23,10 @@ pub use speed_rate::{SpeedRate, Traffic}; #[cfg(target_os = "macos")] use std::sync::Arc; use tauri::menu::{CheckMenuItem, IsMenuItem}; -use tauri::AppHandle; +use tauri::{App, AppHandle}; use tauri::{ menu::{MenuEvent, MenuItem, PredefinedMenuItem, Submenu}, - tray::{MouseButton, MouseButtonState, TrayIconEvent, TrayIconId}, + tray::{MouseButton, MouseButtonState, TrayIconEvent}, Wry, }; #[cfg(target_os = "macos")] @@ -66,13 +67,15 @@ impl Tray { Ok(()) } - pub fn create_systray(&self) -> Result<()> { - let app_handle = handle::Handle::global().app_handle().unwrap(); - let tray_incon_id = TrayIconId::new("main"); - let tray = app_handle.tray_by_id(&tray_incon_id).unwrap(); + pub fn create_systray(&self, app: &App) -> Result<()> { + let builder = TrayIconBuilder::with_id("main") + .icon(app.default_window_icon().unwrap().clone()) + .icon_as_template(false); #[cfg(target_os = "macos")] - tray.set_show_menu_on_left_click(false)?; + let builder = builder.show_menu_on_left_click(false); + + let tray = builder.build(app)?; tray.on_tray_icon_event(|_, event| { let tray_event = { Config::verge().latest().tray_event.clone() }; diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index f8b6fe34..b12955f0 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -96,7 +96,7 @@ pub async fn resolve_setup(app: &mut App) { log::trace!(target: "app", "init system tray"); log_err!(tray::Tray::global().init()); - log_err!(tray::Tray::global().create_systray()); + log_err!(tray::Tray::global().create_systray(app)); log_err!(sysopt::Sysopt::global().update_sysproxy().await); log_err!(sysopt::Sysopt::global().init_guard_sysproxy()); diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 3359113f..ef471b8e 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -30,11 +30,5 @@ } } } - }, - "app": { - "trayIcon": { - "iconPath": "icons/tray-icon-mono.ico", - "iconAsTemplate": true - } } }