fix(macos): support system menu bar icon visibility settings

This commit is contained in:
lzt404 committed 2026-09-20 18:09:32 +08:00
1 parent dc16fe1a84
commit e9fd393ace
3 files changed
+16 -2

No files matched your search

+1
View File
@@ -606,6 +606,7 @@ dependencies = [
"notify",
"objc2",
"objc2-app-kit",
"objc2-foundation",
"regex",
"reqwest 0.12.28",
"rusqlite",
+2 -1
View File
@@ -47,7 +47,8 @@ dbus = "0.9"
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6"
objc2-app-kit = { version = "0.3", features = ["NSApplication", "NSEvent", "NSRunningApplication"] }
objc2-app-kit = { version = "0.3", features = ["NSApplication", "NSEvent", "NSRunningApplication", "NSStatusItem"] }
objc2-foundation = "0.3"
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = [
+13 -1
View File
@@ -1,5 +1,10 @@
use super::*;
#[cfg(target_os = "macos")]
use objc2_app_kit::NSStatusItemBehavior;
#[cfg(target_os = "macos")]
use objc2_foundation::NSString;
#[cfg(target_os = "macos")]
const MACOS_TRAY_ID: &str = "macos-tray";
@@ -96,7 +101,7 @@ pub(crate) fn setup_macos_tray(app: &mut tauri::App<tauri::Wry>) -> tauri::Resul
let click_state = Arc::new(Mutex::new(MacosTrayClickState::default()));
let double_click_interval = Duration::from_secs_f64(NSEvent::doubleClickInterval());
TrayIconBuilder::with_id(MACOS_TRAY_ID)
let tray = TrayIconBuilder::with_id(MACOS_TRAY_ID)
.icon(
app.default_window_icon()
.cloned()
@@ -169,6 +174,13 @@ pub(crate) fn setup_macos_tray(app: &mut tauri::App<tauri::Wry>) -> tauri::Resul
})
.build(app)?;
tray.with_inner_tray_icon(|tray_icon| {
if let Some(status_item) = tray_icon.ns_status_item() {
status_item.setBehavior(NSStatusItemBehavior::RemovalAllowed);
status_item.setAutosaveName(Some(&NSString::from_str(MACOS_TRAY_ID)));
}
})?;
Ok(())
}