From 7d3cae1f5b0b4e998ca1133a12ad5d787a7ad585 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 12 Nov 2024 17:52:00 +0800 Subject: [PATCH] feat: add adaptive tray icon handling --- build/tray_icon.png | Bin 0 -> 6081 bytes src/main/services/TrayService.ts | 14 +++----------- 2 files changed, 3 insertions(+), 11 deletions(-) create mode 100644 build/tray_icon.png diff --git a/build/tray_icon.png b/build/tray_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..48bb9ec40d0ce486c854c7755009fe1e9a1af671 GIT binary patch literal 6081 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 R?LR-&p{lwnb&!W){{!OQ=&k?& literal 0 HcmV?d00001 diff --git a/src/main/services/TrayService.ts b/src/main/services/TrayService.ts index 0ddadd89..9ffcdea0 100644 --- a/src/main/services/TrayService.ts +++ b/src/main/services/TrayService.ts @@ -1,6 +1,8 @@ +import { isMac } from '@main/constant' import { locales } from '@main/utils/locales' import { app, Menu, nativeImage, nativeTheme, Tray } from 'electron' +import icon from '../../../build/tray_icon.png?asset' import iconDark from '../../../build/tray_icon_dark.png?asset' import iconLight from '../../../build/tray_icon_light.png?asset' import { configManager } from './ConfigManager' @@ -15,15 +17,11 @@ export class TrayService { } private createTray() { - const iconPath = nativeTheme.shouldUseDarkColors ? iconLight : iconDark + const iconPath = isMac ? (nativeTheme.shouldUseDarkColors ? iconLight : iconDark) : icon const tray = new Tray(iconPath) if (process.platform === 'win32') { tray.setImage(iconPath) - nativeTheme.on('updated', () => { - const newIconPath = nativeTheme.shouldUseDarkColors ? iconLight : iconDark - tray.setImage(newIconPath) - }) } else if (process.platform === 'darwin') { const image = nativeImage.createFromPath(iconPath) const resizedImage = image.resize({ width: 16, height: 16 }) @@ -33,12 +31,6 @@ export class TrayService { const image = nativeImage.createFromPath(iconPath) const resizedImage = image.resize({ width: 16, height: 16 }) tray.setImage(resizedImage) - nativeTheme.on('updated', () => { - const newIconPath = nativeTheme.shouldUseDarkColors ? iconLight : iconDark - const newImage = nativeImage.createFromPath(newIconPath) - const newResizedImage = newImage.resize({ width: 16, height: 16 }) - tray.setImage(newResizedImage) - }) } this.tray = tray