fix: 设为纯托盘应用,启动不再在Dock显示图标

将Info.plist的LSUIElement改为true,应用以accessory模式启动,
永不显示Dock图标和系统菜单栏。移除运行时切换Dock可见性的
showDockIcon()/hideDockIcon()及其C实现setDockIconVisible,
这些调用在accessory模式下已无意义。activateApp()保留用于
窗口置于前台获取焦点。
This commit is contained in:
2026-07-09 23:20:10 +08:00
parent 469106d502
commit 9d7d4c8287
5 changed files with 1 additions and 17 deletions
-3
View File
@@ -130,7 +130,6 @@ func Run() {
fyne.Do(func() { fyne.Do(func() {
a.windowHidden = false a.windowHidden = false
activateApp() activateApp()
showDockIcon()
a.window.Show() a.window.Show()
a.window.RequestFocus() a.window.RequestFocus()
}) })
@@ -149,7 +148,6 @@ func Run() {
if a.windowHidden { if a.windowHidden {
a.windowHidden = false a.windowHidden = false
activateApp() activateApp()
showDockIcon()
fyne.Do(func() { fyne.Do(func() {
if a.windowHidden { if a.windowHidden {
return return
@@ -173,7 +171,6 @@ func Run() {
a.window.SetCloseIntercept(func() { a.window.SetCloseIntercept(func() {
if cfg.CloseToTray { if cfg.CloseToTray {
a.windowHidden = true a.windowHidden = true
hideDockIcon()
a.window.Hide() a.window.Hide()
} else { } else {
a.quit() a.quit()
-9
View File
@@ -25,12 +25,6 @@ static BOOL appShouldHandleReopen(id self, SEL cmd, id sender, BOOL flag) {
return YES; return YES;
} }
static void setDockIconVisible(int visible) {
Class cls = objc_getClass("NSApplication");
id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication"));
((void (*)(id, SEL, long))objc_msgSend)(app, sel_getUid("setActivationPolicy:"), visible ? 0 : 1);
}
static void cmActivateApp(void) { static void cmActivateApp(void) {
Class cls = objc_getClass("NSApplication"); Class cls = objc_getClass("NSApplication");
id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication")); id app = ((id (*)(Class, SEL))objc_msgSend)(cls, sel_getUid("sharedApplication"));
@@ -53,9 +47,6 @@ static void cmRegisterReopenHandler(void) {
*/ */
import "C" import "C"
func showDockIcon() { C.setDockIconVisible(1) }
func hideDockIcon() { C.setDockIconVisible(0) }
func activateApp() { C.cmActivateApp() } func activateApp() { C.cmActivateApp() }
func registerReopenHandler() { C.cmRegisterReopenHandler() } func registerReopenHandler() { C.cmRegisterReopenHandler() }
-3
View File
@@ -4,9 +4,6 @@ package ui
var onAppActive func() var onAppActive func()
func showDockIcon() {}
func hideDockIcon() {}
func activateApp() {} func activateApp() {}
func registerReopenHandler() {} func registerReopenHandler() {}
-1
View File
@@ -63,7 +63,6 @@ func (a *App) setupTray() {
fyne.NewMenuItem(i18n.T("TrayShowWindow"), func() { fyne.NewMenuItem(i18n.T("TrayShowWindow"), func() {
a.windowHidden = false a.windowHidden = false
activateApp() activateApp()
showDockIcon()
a.window.Show() a.window.Show()
a.window.RequestFocus() a.window.RequestFocus()
}), }),
+1 -1
View File
@@ -32,7 +32,7 @@
<key>NSHighResolutionCapable</key> <key>NSHighResolutionCapable</key>
<true/> <true/>
<key>LSUIElement</key> <key>LSUIElement</key>
<false/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
<dict> <dict>
<key>NSAllowsArbitraryLoads</key> <key>NSAllowsArbitraryLoads</key>