From 387ce3d1a47f985c04403a19e83350e2457b072d Mon Sep 17 00:00:00 2001 From: richblack Date: Fri, 24 Jul 2026 12:56:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(daemon-beta=20t7/t8):=20Dock=20=E9=9A=B1?= =?UTF-8?q?=E8=97=8F=E7=9C=9F=E6=A9=9F=E9=A9=97=E8=AD=89=E9=80=9A=E9=81=8E?= =?UTF-8?q?=EF=BC=88lsappinfo=20type=3DUIElement=EF=BC=89=E2=80=94?= =?UTF-8?q?=E2=80=94runtime=20Accessory=20policy(cgo)+appID+ad-hoc=20?= =?UTF-8?q?=E9=87=8D=E7=B0=BD=EF=BC=9Bmistakes=20=E8=A8=98=E5=9B=9B?= =?UTF-8?q?=E6=9E=9A=E7=9C=9F=E6=A9=9F=E5=9D=91=EF=BC=9B=E6=9A=AB=E7=94=A8?= =?UTF-8?q?=20icon=EF=BC=88=E7=AD=89=20leo=20logo=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/arcrun-tray/build-mac.sh | 5 ++++- cmd/arcrun-tray/dock_darwin.go | 24 ++++++++++++++++++++++++ cmd/arcrun-tray/dock_other.go | 6 ++++++ cmd/arcrun-tray/icon.png | Bin 0 -> 4176 bytes cmd/arcrun-tray/main.go | 3 +++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 cmd/arcrun-tray/dock_darwin.go create mode 100644 cmd/arcrun-tray/dock_other.go create mode 100644 cmd/arcrun-tray/icon.png diff --git a/cmd/arcrun-tray/build-mac.sh b/cmd/arcrun-tray/build-mac.sh index 10f06e9..0fffc92 100755 --- a/cmd/arcrun-tray/build-mac.sh +++ b/cmd/arcrun-tray/build-mac.sh @@ -14,7 +14,7 @@ echo "① 編 collector(同綑執行檔)" ( cd ../.. && go build -o "cmd/arcrun-tray/arcrun-collector" . ) echo "② fyne package" -go run fyne.io/fyne/v2/cmd/fyne@latest package -os darwin -icon icon.png -name "Arcrun RAG" +go run fyne.io/fyne/v2/cmd/fyne@latest package -os darwin -icon icon.png -name "Arcrun RAG" -appID dev.arcrun.rag.tray APP="Arcrun RAG.app" PLIST="$APP/Contents/Info.plist" @@ -26,5 +26,8 @@ echo "③ LSUIElement=true(托盤唯一指示器,隱 Dock icon——leo 07-2 echo "④ 同綑 collector 進 app bundle(托盤 collectorBinPath 找同層)" cp arcrun-collector "$APP/Contents/MacOS/arcrun-collector" +echo "⑤ ad-hoc 重簽(Apple Silicon:改過 plist/塞過檔必重簽,否則 launchd 拒開 error 162——07-24 真機實撞)" +codesign --force --deep -s - "$APP" + echo "✅ 完成:$APP" echo "驗法:open '$APP' → 選單列出現 icon、Dock **不出現** icon → 選單列出資料夾清單" diff --git a/cmd/arcrun-tray/dock_darwin.go b/cmd/arcrun-tray/dock_darwin.go new file mode 100644 index 0000000..d1efd1c --- /dev/null +++ b/cmd/arcrun-tray/dock_darwin.go @@ -0,0 +1,24 @@ +//go:build darwin + +// dock_darwin.go — 托盤唯一指示器(leo 07-24 裁決)的 macOS 實作。 +// +// 真機實測(07-24 第三枚坑):Info.plist 的 LSUIElement=true 會被 fyne/glfw 啟動時 +// 強制的 Regular activation policy 蓋掉(lsappinfo 實測 ApplicationType=Foreground), +// Dock icon 照樣出現。唯一可靠解=app 起來後 runtime 直接把 policy 切成 Accessory。 +package main + +/* +#cgo CFLAGS: -x objective-c +#cgo LDFLAGS: -framework AppKit +#import +static void arcrunHideDock(void) { + dispatch_async(dispatch_get_main_queue(), ^{ + [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory]; + }); +} +*/ +import "C" + +// hideDockIcon 把 app 切成 Accessory(選單列有、Dock 無)。須在 NSApp 初始化後呼叫 +// (掛在 fyne Lifecycle SetOnStarted)。 +func hideDockIcon() { C.arcrunHideDock() } diff --git a/cmd/arcrun-tray/dock_other.go b/cmd/arcrun-tray/dock_other.go new file mode 100644 index 0000000..e1dab88 --- /dev/null +++ b/cmd/arcrun-tray/dock_other.go @@ -0,0 +1,6 @@ +//go:build !darwin + +package main + +// hideDockIcon 在非 macOS 平台是 no-op(Windows 系統匣本來就不佔工作列)。 +func hideDockIcon() {} diff --git a/cmd/arcrun-tray/icon.png b/cmd/arcrun-tray/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ec864e07798b9eb20bb850328eabc2742688ea34 GIT binary patch literal 4176 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe(<#64XcLn`LHy>@Y>fQJa{ zLGf0dwxk)-mzSw@*h@7ju)qHj#je$u_~6^|_L+16H{&<{|M&M3GsBOquV>rd{hG|= zaP;fhdGCH1GA?-ZE6uHHMIw`)^*ZlNV;tT9^N= zRqpovov%Kabx5@{@%Wx;X^dbfdnRo1}R2^84L^y+!%P&7#LOvGBk5C zFl3ENjfTc(+8A8ffy?gy=g$8-U)#HNGf4O_1QgWH5n$Nk3d*+{JM8>8815-Cun9AW z#K^0&Fyw