From 26387273d6dcbb43abe9fd29dcdf99cce2d72878 Mon Sep 17 00:00:00 2001 From: Fei1Yang Date: Sun, 12 Jan 2025 13:13:25 +0000 Subject: [PATCH 1/2] fix: Replace broken environment variable API --- lib/utils/tray_manager.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/tray_manager.dart b/lib/utils/tray_manager.dart index 48ee3096c..2da18227e 100644 --- a/lib/utils/tray_manager.dart +++ b/lib/utils/tray_manager.dart @@ -34,7 +34,7 @@ class TrayManager { return 'assets/tray_icon_$brightness.ico'; } - if (Platform.isLinux && bool.hasEnvironment('FLATPAK_ID')) { + if (Platform.isLinux && Platform.environment.containsKey('FLATPAK_ID')) { return 'ci.not.Rune-tray-$brightness'; } From 3c0e6f79de159919926fb12ebcfb1e728db9a302 Mon Sep 17 00:00:00 2001 From: Fei1Yang Date: Tue, 14 Jan 2025 05:20:01 +0000 Subject: [PATCH 2/2] fix: Supply icon installation status to tray manager --- lib/main.dart | 4 +++- lib/utils/tray_manager.dart | 21 ++++++++++++++------- pubspec.lock | 4 ++-- pubspec.yaml | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 07c2827c6..d8a5ecf1a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -170,10 +170,12 @@ void main(List arguments) async { ); if (isDesktop) { + final icon = TrayManager.getTrayIcon(); await systemTray.initSystemTray( title: Platform.isMacOS ? null : 'Rune', - iconPath: TrayManager.getTrayIconPath(), + iconPath: icon.path, isTemplate: true, + isInstalled: icon.isInstalled, ); final Menu menu = Menu(); diff --git a/lib/utils/tray_manager.dart b/lib/utils/tray_manager.dart index 2da18227e..68edb6dc3 100644 --- a/lib/utils/tray_manager.dart +++ b/lib/utils/tray_manager.dart @@ -18,10 +18,17 @@ import 'l10n.dart'; final SystemTray systemTray = SystemTray(); +class TrayIcon { + final String path; + final bool isInstalled; + + TrayIcon(this.path, this.isInstalled); +} + class TrayManager { - static String getTrayIconPath() { + static TrayIcon getTrayIcon() { if (Platform.isMacOS) { - return 'assets/mac-tray.svg'; + return TrayIcon('assets/mac-tray.svg', false); } final brightness = @@ -31,14 +38,14 @@ class TrayManager { : Brightness.light.name; if (Platform.isWindows) { - return 'assets/tray_icon_$brightness.ico'; + return TrayIcon('assets/tray_icon_$brightness.ico', false); } if (Platform.isLinux && Platform.environment.containsKey('FLATPAK_ID')) { - return 'ci.not.Rune-tray-$brightness'; + return TrayIcon('ci.not.Rune-tray-$brightness', true); } - return 'assets/linux-tray-$brightness.svg'; + return TrayIcon('assets/linux-tray-$brightness.svg', false); } bool? _cachedPlaying; @@ -106,8 +113,8 @@ class TrayManager { } Future updateTrayIcon() async { - final iconPath = getTrayIconPath(); - await systemTray.setImage(iconPath, isTemplate: true); + final icon = getTrayIcon(); + await systemTray.setImage(icon.path, isTemplate: true, isInstalled: icon.isInstalled); } static void registerEventHandlers() { diff --git a/pubspec.lock b/pubspec.lock index 4a2130112..bba1a5168 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1190,8 +1190,8 @@ packages: dependency: "direct main" description: path: "." - ref: e0fd539785d2f656a8efd76376c6f2225848b9be - resolved-ref: e0fd539785d2f656a8efd76376c6f2225848b9be + ref: ddbf360835b1db404fbd52b07b250e0e2c950266 + resolved-ref: ddbf360835b1db404fbd52b07b250e0e2c950266 url: "https://github.com/Losses/system_tray.git" source: git version: "2.0.3" diff --git a/pubspec.yaml b/pubspec.yaml index 865fb1785..a7a336c1a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -80,7 +80,7 @@ dependencies: system_tray: git: url: https://github.com/Losses/system_tray.git - ref: e0fd539785d2f656a8efd76376c6f2225848b9be + ref: ddbf360835b1db404fbd52b07b250e0e2c950266 scrollable_positioned_list: git: url: https://github.com/Losses/scrollable_positioned_list.git