From e76ada9b4bcd0883602897d16406ff37b88e9d69 Mon Sep 17 00:00:00 2001 From: nite Date: Sat, 7 Feb 2026 17:57:48 +0800 Subject: [PATCH] add systray --- .goreleaser.yaml | 8 +- .vscode/launch.json | 4 + .../mesh-drop/internal/config/config.ts | 16 +- frontend/src/components/SettingsView.vue | 37 +- .../src/components/modals/FileSendModal.vue | 19 +- .../src/components/modals/TextSendModal.vue | 16 +- frontend/src/locales/en.json | 20 +- frontend/src/locales/zh-Hans.json | 20 +- go.mod | 103 ------ go.sum | 318 ------------------ internal/config/config.go | 174 +++++----- internal/discovery/service.go | 6 +- internal/transfer/history.go | 11 +- internal/transfer/service.go | 4 + main.go | 154 ++++++--- systray.go | 7 - systray_windows.go | 35 -- 17 files changed, 335 insertions(+), 617 deletions(-) delete mode 100644 systray.go delete mode 100644 systray_windows.go diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 5942573..e237bf5 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -5,9 +5,9 @@ project_name: mesh-drop before: hooks: - go mod tidy - - go tool wails3 generate bindings -ts + - wails3 generate bindings -ts - sh -c 'cd frontend && npm run build' - - go tool wails3 generate .desktop -name "{{.ProjectName}}" -exec "{{.ProjectName}}" -icon "{{.ProjectName}}.png" -outputfile "goreleaser/{{.ProjectName}}.desktop" -categories "Network;FileTransfer;" -keywords "mesh,transfer,file,network,drop" + - wails3 generate .desktop -name "{{.ProjectName}}" -exec "{{.ProjectName}}" -icon "{{.ProjectName}}.png" -outputfile "goreleaser/{{.ProjectName}}.desktop" -categories "Network;FileTransfer;" -keywords "mesh,transfer,file,network,drop" builds: - id: linux-amd64 @@ -41,8 +41,8 @@ builds: - -s -w -H windowsgui -X mesh-drop/internal/config.Version={{ .Version }} hooks: pre: - - "go tool wails3 generate icons -input goreleaser/icon.png -windowsfilename goreleaser/icon.ico" - - "go tool wails3 generate syso -arch amd64 -icon goreleaser/icon.ico -manifest goreleaser/wails.exe.manifest -info goreleaser/info.json -out goreleaser/wails_windows_amd64.syso" + - "wails3 generate icons -input goreleaser/icon.png -windowsfilename goreleaser/icon.ico" + - "wails3 generate syso -arch amd64 -icon goreleaser/icon.ico -manifest goreleaser/wails.exe.manifest -info goreleaser/info.json -out goreleaser/wails_windows_amd64.syso" post: "rm -f goreleaser/wails_windows_amd64.syso" archives: diff --git a/.vscode/launch.json b/.vscode/launch.json index 71643e6..90a2d5a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,6 +10,10 @@ "request": "launch", "mode": "auto", "program": "${workspaceFolder}", + "args": [ + "-tags", + "gtk4" + ], "preLaunchTask": "build frontend" } ] diff --git a/frontend/bindings/mesh-drop/internal/config/config.ts b/frontend/bindings/mesh-drop/internal/config/config.ts index d3bb678..ca23f33 100644 --- a/frontend/bindings/mesh-drop/internal/config/config.ts +++ b/frontend/bindings/mesh-drop/internal/config/config.ts @@ -17,6 +17,10 @@ export function GetAutoAccept(): $CancellablePromise { return $Call.ByID(2605668438); } +export function GetCloseToSystray(): $CancellablePromise { + return $Call.ByID(3671455511); +} + export function GetHostName(): $CancellablePromise { return $Call.ByID(972342140); } @@ -29,8 +33,12 @@ export function GetLanguage(): $CancellablePromise<$models.Language> { return $Call.ByID(480133131); } -export function GetLanguageByString(str: string): $CancellablePromise<$models.Language> { - return $Call.ByID(905794983, str); +export function GetPrivateKey(): $CancellablePromise { + return $Call.ByID(353744619); +} + +export function GetPublicKey(): $CancellablePromise { + return $Call.ByID(2506498735); } export function GetSaveHistory(): $CancellablePromise { @@ -76,6 +84,10 @@ export function SetAutoAccept(autoAccept: boolean): $CancellablePromise { return $Call.ByID(3371961138, autoAccept); } +export function SetCloseToSystray(closeToSystray: boolean): $CancellablePromise { + return $Call.ByID(2558495467, closeToSystray); +} + export function SetHostName(hostName: string): $CancellablePromise { return $Call.ByID(1580131496, hostName); } diff --git a/frontend/src/components/SettingsView.vue b/frontend/src/components/SettingsView.vue index 8e3fae1..fc438c8 100644 --- a/frontend/src/components/SettingsView.vue +++ b/frontend/src/components/SettingsView.vue @@ -17,7 +17,8 @@ import { GetVersion, GetLanguage, SetLanguage, - GetLanguageByString, + SetCloseToSystray, + GetCloseToSystray, } from "../../bindings/mesh-drop/internal/config/config"; import { Language } from "bindings/mesh-drop/internal/config"; @@ -27,6 +28,7 @@ const hostName = ref(""); const autoAccept = ref(false); const saveHistory = ref(false); const version = ref(""); +const closeToSystray = ref(false); const { t, locale } = useI18n(); @@ -46,6 +48,7 @@ onMounted(async () => { if (l != "") { locale.value = l; } + closeToSystray.value = await GetCloseToSystray(); }); // --- 方法 --- @@ -71,6 +74,7 @@ watch(locale, async (newVal) => { diff --git a/frontend/src/components/modals/FileSendModal.vue b/frontend/src/components/modals/FileSendModal.vue index 5aa89a1..32c1bb0 100644 --- a/frontend/src/components/modals/FileSendModal.vue +++ b/frontend/src/components/modals/FileSendModal.vue @@ -1,6 +1,7 @@