From ae37550845d660b9b2a9b0f69ee59da97dfd8efc Mon Sep 17 00:00:00 2001 From: pompurin404 Date: Wed, 14 Aug 2024 19:00:03 +0800 Subject: [PATCH] fix MacOS tray icon --- resources/iconTemplate.png | Bin 0 -> 3048 bytes resources/iconTemplate@2x.png | Bin 0 -> 4048 bytes src/main/core/mihomoApi.ts | 31 ++++++------------------------- src/main/core/tray.ts | 20 +++++++++++++------- 4 files changed, 19 insertions(+), 32 deletions(-) create mode 100644 resources/iconTemplate.png create mode 100644 resources/iconTemplate@2x.png diff --git a/resources/iconTemplate.png b/resources/iconTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..6212d2a0d1c568b80b3b9688ba90340c4553cf7b GIT binary patch literal 3048 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 = export async function mihomoVersion(): Promise { const instance = await getAxios() - try { - return await instance.get('/version') - } catch (error) { - return { version: '-', meta: true } - } + return await instance.get('/version') } export const patchMihomoConfig = async (patch: Partial): Promise => { @@ -67,29 +63,18 @@ export const mihomoCloseAllConnections = async (): Promise => { export const mihomoRules = async (): Promise => { const instance = await getAxios() - try { - return await instance.get('/rules') - } catch (e) { - return { rules: [] } - } + return await instance.get('/rules') } export const mihomoProxies = async (): Promise => { const instance = await getAxios() - try { - return await instance.get('/proxies') - } catch (e) { - return { proxies: {} } - } + + return await instance.get('/proxies') } export const mihomoProxyProviders = async (): Promise => { const instance = await getAxios() - try { - return await instance.get('/providers/proxies') - } catch (e) { - return { providers: {} } - } + return await instance.get('/providers/proxies') } export const mihomoUpdateProxyProviders = async (name: string): Promise => { @@ -99,11 +84,7 @@ export const mihomoUpdateProxyProviders = async (name: string): Promise => export const mihomoRuleProviders = async (): Promise => { const instance = await getAxios() - try { - return await instance.get('/providers/rules') - } catch (e) { - return { providers: {} } - } + return await instance.get('/providers/rules') } export const mihomoUpdateRuleProviders = async (name: string): Promise => { diff --git a/src/main/core/tray.ts b/src/main/core/tray.ts index 741f238..aafee78 100644 --- a/src/main/core/tray.ts +++ b/src/main/core/tray.ts @@ -6,9 +6,10 @@ import { } from '../config' import icoIcon from '../../../resources/icon.ico?asset' import pngIcon from '../../../resources/icon.png?asset' +import templateIcon from '../../../resources/iconTemplate.png?asset' import { patchMihomoConfig } from './mihomoApi' import { mainWindow, showMainWindow } from '..' -import { app, ipcMain, Menu, shell, Tray } from 'electron' +import { app, ipcMain, Menu, nativeImage, shell, Tray } from 'electron' import { dataDir, logDir, mihomoCoreDir, mihomoWorkDir } from '../utils/dirs' import { triggerSysProxy } from '../resolve/sysproxy' @@ -141,7 +142,13 @@ const buildContextMenu = async (): Promise => { export async function createTray(): Promise { if (process.platform === 'linux') { tray = new Tray(pngIcon) - } else { + } + if (process.platform === 'darwin') { + const icon = nativeImage.createFromPath(templateIcon) + icon.setTemplateImage(true) + tray = new Tray(icon) + } + if (process.platform === 'win32') { tray = new Tray(icoIcon) } const menu = await buildContextMenu() @@ -153,11 +160,10 @@ export async function createTray(): Promise { await updateTrayMenu() }) - tray.setContextMenu(menu) - tray.setIgnoreDoubleClickEvents(true) - tray.setToolTip('Another Mihomo GUI.') - tray.setTitle('Mihomo Party') - tray.addListener('click', () => { + tray?.setContextMenu(menu) + tray?.setIgnoreDoubleClickEvents(true) + tray?.setToolTip('Mihomo Party') + tray?.addListener('click', () => { if (mainWindow?.isVisible()) { mainWindow?.close() } else {