diff --git a/client/assets/tray_icon.ico b/client/assets/tray_icon.ico new file mode 100644 index 0000000..a917de1 Binary files /dev/null and b/client/assets/tray_icon.ico differ diff --git a/client/lib/main.dart b/client/lib/main.dart index b03f2c5..8a75226 100644 --- a/client/lib/main.dart +++ b/client/lib/main.dart @@ -31,6 +31,8 @@ Future main() async { await windowManager.setMinimumSize(const Size(720, 560)); await windowManager.setSize(const Size(920, 640)); await windowManager.center(); + // 窗口标题用中文品牌名(不带 "VPN" 字眼);英文环境下原生标题为 "Pangolin"。 + await windowManager.setTitle('穿山甲'); } runApp(const ProviderScope(child: PangolinApp())); } diff --git a/client/lib/system_tray.dart b/client/lib/system_tray.dart index 67edadb..1eea776 100644 --- a/client/lib/system_tray.dart +++ b/client/lib/system_tray.dart @@ -53,7 +53,11 @@ class TrayService with TrayListener, WindowListener { windowManager.addListener(this); trayManager.addListener(this); - await trayManager.setIcon('assets/tray_icon.png'); + // Windows 托盘走 Win32 Shell_NotifyIcon,只认 .ico(传 PNG 会显示空白); + // macOS/Linux 用 PNG。 + await trayManager.setIcon( + Platform.isWindows ? 'assets/tray_icon.ico' : 'assets/tray_icon.png', + ); await trayManager.setToolTip('穿山甲 Pangolin'); await trayManager.setContextMenu(Menu(items: [ MenuItem(key: 'show', label: '显示主界面'), diff --git a/client/pubspec.yaml b/client/pubspec.yaml index 26c90ac..e697407 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -1,7 +1,7 @@ name: pangolin_vpn description: 穿山甲 · Pangolin — 极简、稳定、跨平台网络加速客户端。 publish_to: "none" -version: 1.0.0+1 +version: 1.0.1+2 environment: sdk: ^3.5.0 @@ -45,6 +45,7 @@ flutter: - assets/logo-wordmark.svg - assets/app-icon.svg - assets/tray_icon.png + - assets/tray_icon.ico # Windows 托盘专用(Win32 只认 .ico) # ── 字体(本地打包,全平台离线)── # 拉丁全量(Sora/Manrope/JetBrains Mono)+ Noto Sans SC 子集(GB2312 6763 字,单 Regular diff --git a/client/windows/installer/pangolin.iss b/client/windows/installer/pangolin.iss index 72d5015..93df1d2 100644 --- a/client/windows/installer/pangolin.iss +++ b/client/windows/installer/pangolin.iss @@ -3,7 +3,7 @@ ; 前置: 先在 client/ 跑 `flutter build windows`(Release),产物在 ; ..\..\build\windows\x64\runner\Release #define MyAppName "穿山甲 Pangolin" -#define MyAppVersion "1.0.0" +#define MyAppVersion "1.0.1" #define MyAppPublisher "Pangolin" #define MyAppExeName "pangolin_vpn.exe" #define BuildDir "..\..\build\windows\x64\runner\Release" diff --git a/client/windows/runner/Runner.rc b/client/windows/runner/Runner.rc index 89e9401..e1b3e72 100644 --- a/client/windows/runner/Runner.rc +++ b/client/windows/runner/Runner.rc @@ -90,12 +90,12 @@ BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "com.pangolin" "\0" - VALUE "FileDescription", "pangolin_vpn" "\0" + VALUE "FileDescription", "Pangolin" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "pangolin_vpn" "\0" + VALUE "InternalName", "Pangolin" "\0" VALUE "LegalCopyright", "Copyright (C) 2026 com.pangolin. All rights reserved." "\0" VALUE "OriginalFilename", "pangolin_vpn.exe" "\0" - VALUE "ProductName", "pangolin_vpn" "\0" + VALUE "ProductName", "Pangolin" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END diff --git a/client/windows/runner/main.cpp b/client/windows/runner/main.cpp index 45dd14e..ffc6f9c 100644 --- a/client/windows/runner/main.cpp +++ b/client/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"pangolin_vpn", origin, size)) { + if (!window.Create(L"Pangolin", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/client/windows/runner/resources/app_icon.ico b/client/windows/runner/resources/app_icon.ico index c04e20c..c1febf4 100644 Binary files a/client/windows/runner/resources/app_icon.ico and b/client/windows/runner/resources/app_icon.ico differ