fix(macos): support system menu bar icon visibility settings
This commit is contained in:
1 parent
dc16fe1a84
commit
e9fd393ace
3 files changed
+16
-2
No files matched your search
Generated
+1
@@ -606,6 +606,7 @@ dependencies = [
|
||||
"notify",
|
||||
"objc2",
|
||||
"objc2-app-kit",
|
||||
"objc2-foundation",
|
||||
"regex",
|
||||
"reqwest 0.12.28",
|
||||
"rusqlite",
|
||||
|
||||
@@ -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
@@ -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(())
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user