diff --git a/next/electron/main/index.ts b/next/electron/main/index.ts index 77eef0ec..a8f77d87 100644 --- a/next/electron/main/index.ts +++ b/next/electron/main/index.ts @@ -1773,7 +1773,7 @@ function updateTray(settings: AppSettings): void { } if (!tray) { - const traySize = process.platform === 'darwin' ? 18 : 20 + const traySize = process.platform === 'darwin' ? 20 : 24 const trayImage = nativeImage.createFromPath(getTrayIconPath()).resize({ width: traySize, height: traySize }) if (trayImage.isEmpty()) return if (process.platform === 'darwin') trayImage.setTemplateImage(true) diff --git a/src/main/java/com/luoboduner/moo/tool/App.java b/src/main/java/com/luoboduner/moo/tool/App.java index 18b1363e..844050f6 100644 --- a/src/main/java/com/luoboduner/moo/tool/App.java +++ b/src/main/java/com/luoboduner/moo/tool/App.java @@ -62,6 +62,7 @@ public class App { if (SystemInfo.isMacOS) { System.setProperty("apple.laf.useScreenMenuBar", "true"); + System.setProperty("apple.awt.enableTemplateImages", "true"); System.setProperty("apple.awt.application.name", "MooTool"); System.setProperty("com.apple.mrj.application.apple.menu.about.name", "MooTool"); System.setProperty("apple.awt.application.appearance", "system"); diff --git a/src/main/java/com/luoboduner/moo/tool/ui/Init.java b/src/main/java/com/luoboduner/moo/tool/ui/Init.java index 1f61d248..c4249cee 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/Init.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/Init.java @@ -299,8 +299,12 @@ public class Init { public static void initTray() { try { - if (SystemTray.isSupported() && App.tray == null) { - App.tray = SystemTray.getSystemTray(); + if (!SystemTray.isSupported()) { + logger.warn("System tray is not supported"); + return; + } + if (App.trayIcon == null) { + SystemTray tray = App.tray != null ? App.tray : SystemTray.getSystemTray(); App.popupMenu = new JPopupMenu(); // App.popupMenu.setFont(App.mainFrame.getContentPane().getFont()); @@ -337,20 +341,23 @@ public class Init { App.popupMenu.addSeparator(); App.popupMenu.add(exitItem); - App.trayIcon = new TrayIcon(UiConsts.IMAGE_TRAY_64, "MooTool"); - App.trayIcon.setImageAutoSize(true); + TrayIcon trayIcon = new TrayIcon(UiConsts.IMAGE_TRAY_64, "MooTool"); + trayIcon.setImageAutoSize(true); - App.trayIcon.addActionListener(e -> { + trayIcon.addActionListener(e -> { App.mainFrame.setVisible(true); App.mainFrame.setExtendedState(JFrame.NORMAL); App.mainFrame.requestFocus(); }); JPopupMenuMouseAdapter jPopupMenuMouseAdapter = new JPopupMenuMouseAdapter(App.popupMenu); - App.trayIcon.addMouseListener(jPopupMenuMouseAdapter); + trayIcon.addMouseListener(jPopupMenuMouseAdapter); try { - App.tray.add(App.trayIcon); + tray.add(trayIcon); + App.tray = tray; + App.trayIcon = trayIcon; + logger.info("System tray icon initialized"); } catch (AWTException e) { e.printStackTrace(); logger.error(ExceptionUtils.getStackTrace(e)); diff --git a/src/main/java/com/luoboduner/moo/tool/ui/startup/StartupCoordinator.java b/src/main/java/com/luoboduner/moo/tool/ui/startup/StartupCoordinator.java index 8e80521e..e591a21e 100644 --- a/src/main/java/com/luoboduner/moo/tool/ui/startup/StartupCoordinator.java +++ b/src/main/java/com/luoboduner/moo/tool/ui/startup/StartupCoordinator.java @@ -62,6 +62,7 @@ public final class StartupCoordinator { started = true; phase.set(StartupPhase.SHELL_VISIBLE); StartupMetrics.mark("mainFrame.visible"); + Init.initTray(); phase.set(StartupPhase.CRITICAL_LOADING); StartupMetrics.mark("critical.loading");