mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-04 23:23:45 +08:00
feat: update systray creation to use TrayIconBuilder and pass app reference
fix: macos systray duplicated icon
This commit is contained in:
parent
0f10952979
commit
2bcd653a56
@ -1,4 +1,5 @@
|
|||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
|
use tauri::tray::TrayIconBuilder;
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub mod speed_rate;
|
pub mod speed_rate;
|
||||||
use crate::module::mihomo::Rate;
|
use crate::module::mihomo::Rate;
|
||||||
@ -22,10 +23,10 @@ pub use speed_rate::{SpeedRate, Traffic};
|
|||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tauri::menu::{CheckMenuItem, IsMenuItem};
|
use tauri::menu::{CheckMenuItem, IsMenuItem};
|
||||||
use tauri::AppHandle;
|
use tauri::{App, AppHandle};
|
||||||
use tauri::{
|
use tauri::{
|
||||||
menu::{MenuEvent, MenuItem, PredefinedMenuItem, Submenu},
|
menu::{MenuEvent, MenuItem, PredefinedMenuItem, Submenu},
|
||||||
tray::{MouseButton, MouseButtonState, TrayIconEvent, TrayIconId},
|
tray::{MouseButton, MouseButtonState, TrayIconEvent},
|
||||||
Wry,
|
Wry,
|
||||||
};
|
};
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
@ -66,13 +67,15 @@ impl Tray {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_systray(&self) -> Result<()> {
|
pub fn create_systray(&self, app: &App) -> Result<()> {
|
||||||
let app_handle = handle::Handle::global().app_handle().unwrap();
|
let builder = TrayIconBuilder::with_id("main")
|
||||||
let tray_incon_id = TrayIconId::new("main");
|
.icon(app.default_window_icon().unwrap().clone())
|
||||||
let tray = app_handle.tray_by_id(&tray_incon_id).unwrap();
|
.icon_as_template(false);
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[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| {
|
tray.on_tray_icon_event(|_, event| {
|
||||||
let tray_event = { Config::verge().latest().tray_event.clone() };
|
let tray_event = { Config::verge().latest().tray_event.clone() };
|
||||||
|
@ -96,7 +96,7 @@ pub async fn resolve_setup(app: &mut App) {
|
|||||||
|
|
||||||
log::trace!(target: "app", "init system tray");
|
log::trace!(target: "app", "init system tray");
|
||||||
log_err!(tray::Tray::global().init());
|
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().update_sysproxy().await);
|
||||||
log_err!(sysopt::Sysopt::global().init_guard_sysproxy());
|
log_err!(sysopt::Sysopt::global().init_guard_sysproxy());
|
||||||
|
@ -30,11 +30,5 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"app": {
|
|
||||||
"trayIcon": {
|
|
||||||
"iconPath": "icons/tray-icon-mono.ico",
|
|
||||||
"iconAsTemplate": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user