diff --git a/assets/tray/icon_dark.ico b/assets/tray/icon_dark.ico new file mode 100644 index 0000000..be7e263 Binary files /dev/null and b/assets/tray/icon_dark.ico differ diff --git a/assets/tray/icon_dark.png b/assets/tray/icon_dark.png new file mode 100644 index 0000000..fd6e90b Binary files /dev/null and b/assets/tray/icon_dark.png differ diff --git a/assets/tray/icon.ico b/assets/tray/icon_light.ico similarity index 100% rename from assets/tray/icon.ico rename to assets/tray/icon_light.ico diff --git a/assets/tray/icon.png b/assets/tray/icon_light.png similarity index 100% rename from assets/tray/icon.png rename to assets/tray/icon_light.png diff --git a/lib/init.dart b/lib/init.dart index d89b831..6fecbfe 100644 --- a/lib/init.dart +++ b/lib/init.dart @@ -32,9 +32,14 @@ Future init() async { // load system accent color await SystemTheme.accentColor.load(); + initTrayIcon(); +} + +Future initTrayIcon([Brightness platformBrightness = Brightness.light]) async { // tray icon init try { - await trayManager.setIcon(Platform.isWindows ? 'assets/tray/icon.ico' : 'assets/tray/icon.png'); + final iconName = platformBrightness.isDark ? 'icon_light' : 'icon_dark'; + await trayManager.setIcon(Platform.isWindows ? 'assets/tray/$iconName.ico' : 'assets/tray/$iconName.png'); if (Platform.isLinux) { // Don't show title on macOS (takes up more space in menu bar) // Not supported on Windows diff --git a/lib/main.dart b/lib/main.dart index 1f6ae79..990f6ba 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -47,6 +47,15 @@ class _MyAppState extends State { .toList(growable: false); late final _argsMap = {for (final instance in _argsInstances) instance.label: instance}; + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + final platformBrightness = MediaQuery.of(context).platformBrightness; + initTrayIcon(platformBrightness); + }); + } + @override Widget build(BuildContext context) { return FutureBuilder(