diff --git a/build/icon.png b/build/icon.png index 287706776456c3213deea8792ff33d51875ee5d3..196b687e8fd96aa6157366df9f30162202e45917 100644 Binary files a/build/icon.png and b/build/icon.png differ diff --git a/build/icons/1024x1024.png b/build/icons/1024x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..74deaacca56101116b6f77d92397ec420e132537 Binary files /dev/null and b/build/icons/1024x1024.png differ diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9d83273e5594a13b2783f19b947d6972423bbfa5 Binary files /dev/null and b/build/icons/128x128.png differ diff --git a/build/icons/128x128@2x.png b/build/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3280ba838001b6a934cb7f941e0d66311fd80335 Binary files /dev/null and b/build/icons/128x128@2x.png differ diff --git a/build/icons/16x16.png b/build/icons/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee1647808813ddc8c0ccaee3e5ef1464e615b5b Binary files /dev/null and b/build/icons/16x16.png differ diff --git a/build/icons/16x16@2x.png b/build/icons/16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..64674df204834c7861ad28f593211608fe5db79a Binary files /dev/null and b/build/icons/16x16@2x.png differ diff --git a/build/icons/24x24.png b/build/icons/24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2ad6b7b1194606cb89178f518d5b4f7dc2a2e4 Binary files /dev/null and b/build/icons/24x24.png differ diff --git a/build/icons/24x24@2x.png b/build/icons/24x24@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e460d0994f2cab93e20a4209b35e88e4e04013a9 Binary files /dev/null and b/build/icons/24x24@2x.png differ diff --git a/build/icons/256x256.png b/build/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..cf38e1811ef4dcf8880c06b71168ad4bc82ba69a Binary files /dev/null and b/build/icons/256x256.png differ diff --git a/build/icons/256x256@2x.png b/build/icons/256x256@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f214983e05cea93bbe0b79177f9659c5d0c3b43 Binary files /dev/null and b/build/icons/256x256@2x.png differ diff --git a/build/icons/32x32.png b/build/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..cadebdd3ee0f7f3c76c75e5885929867a4295c02 Binary files /dev/null and b/build/icons/32x32.png differ diff --git a/build/icons/32x32@2x.png b/build/icons/32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf4f897f52506e82308f0f6a32328a8b411097c Binary files /dev/null and b/build/icons/32x32@2x.png differ diff --git a/build/icons/48x48.png b/build/icons/48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0ea4e0962859b8d18a79644232834711078619 Binary files /dev/null and b/build/icons/48x48.png differ diff --git a/build/icons/48x48@2x.png b/build/icons/48x48@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..38eba57df733c7f4ac351cb79f9540c3c8b2ae78 Binary files /dev/null and b/build/icons/48x48@2x.png differ diff --git a/build/icons/512x512.png b/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1f1fb4070e422e586473516e15bea0beabe35f Binary files /dev/null and b/build/icons/512x512.png differ diff --git a/build/icons/512x512@2x.png b/build/icons/512x512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..38b463ca89bec60bdbfff2a7b02a51b97270ca24 Binary files /dev/null and b/build/icons/512x512@2x.png differ diff --git a/build/icons/64x64.png b/build/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..73bda39eeebdffa9c91bdf2fd6301c2dbad45765 Binary files /dev/null and b/build/icons/64x64.png differ diff --git a/build/icons/64x64@2x.png b/build/icons/64x64@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d3afc74390c9f080065befbec2bc3a6502879443 Binary files /dev/null and b/build/icons/64x64@2x.png differ diff --git a/build/linux/euler-copilot-desktop.png b/build/linux/euler-copilot-desktop.png deleted file mode 100644 index 287706776456c3213deea8792ff33d51875ee5d3..0000000000000000000000000000000000000000 Binary files a/build/linux/euler-copilot-desktop.png and /dev/null differ diff --git a/build/linux/euler-copilot-web.spec b/build/linux/euler-copilot-web.spec index c3c5d32881049877cbbd78c37df27b9b011317ed..bef916e9307c1416ec76910370f8e390a3f31d62 100644 --- a/build/linux/euler-copilot-web.spec +++ b/build/linux/euler-copilot-web.spec @@ -102,13 +102,30 @@ pnpm run package:linux %install mkdir -p %{buildroot}/opt/EulerCopilot mkdir -p %{buildroot}/usr/share/applications +# 创建图标目录 +mkdir -p %{buildroot}/usr/share/icons/hicolor/16x16/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/24x24/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/32x32/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/48x48/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/64x64/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/128x128/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/256x256/apps +mkdir -p %{buildroot}/usr/share/icons/hicolor/256x256@2/apps mkdir -p %{buildroot}/usr/share/icons/hicolor/512x512/apps # 复制构件到目标目录 cp -a %{_builddir}/%{name}-%{version}/release/euler-copilot-%{version}/%{_electron_build_dir}/* %{buildroot}/opt/EulerCopilot/ # 拷贝桌面入口文件和图标 cp -a %{_builddir}/%{name}-%{version}/build/linux/euler-copilot-desktop.desktop %{buildroot}/usr/share/applications/ -cp -a %{_builddir}/%{name}-%{version}/build/linux/euler-copilot-desktop.png %{buildroot}/usr/share/icons/hicolor/512x512/apps/ +cp -a %{_builddir}/%{name}-%{version}/build/icons/16x16.png %{buildroot}/usr/share/icons/hicolor/16x16/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/24x24.png %{buildroot}/usr/share/icons/hicolor/24x24/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/32x32.png %{buildroot}/usr/share/icons/hicolor/32x32/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/48x48.png %{buildroot}/usr/share/icons/hicolor/48x48/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/64x64.png %{buildroot}/usr/share/icons/hicolor/64x64/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/128x128.png %{buildroot}/usr/share/icons/hicolor/128x128/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/256x256.png %{buildroot}/usr/share/icons/hicolor/256x256/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/256x256@2x.png %{buildroot}/usr/share/icons/hicolor/256x256@2/apps/euler-copilot-desktop.png +cp -a %{_builddir}/%{name}-%{version}/build/icons/512x512.png %{buildroot}/usr/share/icons/hicolor/512x512/apps/euler-copilot-desktop.png %files @@ -121,6 +138,14 @@ cp -a %{_builddir}/%{name}-%{version}/build/linux/euler-copilot-desktop.png %{bu %attr(0755, root, root) /opt/EulerCopilot/* # 桌面与图标 %attr(0644, root, root) /usr/share/applications/euler-copilot-desktop.desktop +%attr(0644, root, root) /usr/share/icons/hicolor/16x16/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/24x24/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/32x32/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/48x48/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/64x64/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/128x128/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/256x256/apps/euler-copilot-desktop.png +%attr(0644, root, root) /usr/share/icons/hicolor/256x256@2/apps/euler-copilot-desktop.png %attr(0644, root, root) /usr/share/icons/hicolor/512x512/apps/euler-copilot-desktop.png diff --git a/installer.nsh b/build/win/nsis-installer.nsh similarity index 100% rename from installer.nsh rename to build/win/nsis-installer.nsh diff --git a/electron/main/window/create.ts b/electron/main/window/create.ts index a2f180ef4d30b954f35bb038adaaa89d76657e2b..a06b3b2b3d991918434b45013f86bf6ab7675632 100644 --- a/electron/main/window/create.ts +++ b/electron/main/window/create.ts @@ -13,7 +13,6 @@ import { BrowserWindow, app, ipcMain, Menu } from 'electron'; import { options as allWindow } from './options'; import { updateConf } from '../common/conf'; import { isLinux } from '../common/platform'; -import { iconPath } from './options'; // 存储所有创建的窗口实例,用于全局访问 const windowInstances: Map = new Map(); @@ -121,7 +120,6 @@ function setupWindowOpenHandler(win: BrowserWindow) { width, height, autoHideMenuBar: true, - icon: iconPath, x, y, resizable: true, diff --git a/electron/main/window/options.ts b/electron/main/window/options.ts index 356349cb3677f7aaf0d3e2361892a056c7118e51..53334fee7cb146573cc69ca4bbb24f21dca98cda 100644 --- a/electron/main/window/options.ts +++ b/electron/main/window/options.ts @@ -48,9 +48,6 @@ const adjustWindowSize = ( return result; }; -export const iconPath = electron.app.isPackaged - ? 'dist/favicon.ico' - : path.join(__dirname, '../../public/app_favicon.ico'); export const options: allWindowType = { mainWindow: { id: 'mainWindow', @@ -64,7 +61,6 @@ export const options: allWindowType = { show: true, alwaysOnTop: false, useContentSize: true, - icon: iconPath, ...getLinuxSpecificOptions(), }), hash: '/', @@ -82,7 +78,6 @@ export const options: allWindowType = { alwaysOnTop: true, useContentSize: true, titleBarStyle: 'hidden', - icon: iconPath, ...getLinuxSpecificOptions(), }), hash: '/chat', diff --git a/electron/main/window/tray.ts b/electron/main/window/tray.ts index 246afec825706ba47057b7e687dd2bba28e99f3c..6ed37d0e72c250da5a1a6a12c8bec05900e9194e 100644 --- a/electron/main/window/tray.ts +++ b/electron/main/window/tray.ts @@ -8,7 +8,7 @@ // PURPOSE. // See the Mulan PSL v2 for more details. import path from 'node:path'; -import { app, Tray, Menu, BrowserWindow } from 'electron'; +import { app, Tray, Menu, BrowserWindow, nativeImage } from 'electron'; import type { MenuItemConstructorOptions } from 'electron'; import { createDefaultWindow, createChatWindow } from './create'; @@ -79,6 +79,22 @@ export function createTray(): Tray { ? path.join(__dirname, '../app_favicon.ico') : path.join(__dirname, '../favicon.ico'); appTray = new Tray(iconPath); + // 根据平台处理图标 + if (process.platform === 'win32') { + // Windows平台直接设置图标 + appTray.setImage(iconPath); + } else if (process.platform === 'darwin') { + // macOS 平台需要调整尺寸并设置为模板图像 + const image = nativeImage.createFromPath(iconPath); + const resizedImage = image.resize({ width: 18, height: 18 }); + resizedImage.setTemplateImage(true); + appTray.setImage(resizedImage); + } else if (process.platform === 'linux') { + // Linux 平台需要调整尺寸 + const image = nativeImage.createFromPath(iconPath); + const resizedImage = image.resize({ width: 18, height: 18 }); + appTray.setImage(resizedImage); + } const contextMenu = Menu.buildFromTemplate(trayMenus); appTray.setToolTip('EulerCopilot'); diff --git a/package.json b/package.json index a23c463c84d5c213ab127ab6d740c07160730ea0..3a8e0feb38d466534663eeba6714ad5f1ca51a79 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,10 @@ "output": "release/${name}-${version}" }, "asar": true, + "electronLanguages": [ + "zh-CN", + "en-US" + ], "files": [ "dist/**/*", "!dist/**/*.map", @@ -56,7 +60,6 @@ "!**/{appveyor.yml,.travis.yml,circle.yml,.github,.gitlab-ci.yml}", "!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}" ], - "afterSign": "build/scripts/notarize.js", "win": { "target": [ { @@ -93,7 +96,11 @@ "createStartMenuShortcut": true, "shortcutName": "EulerCopilot", "deleteAppDataOnUninstall": true, - "include": "./installer.nsh" + "include": "build/win/nsis-installer.nsh" + }, + "afterSign": "build/scripts/notarize.js", + "electronDownload": { + "mirror": "https://npmmirror.com/mirrors/electron/" } }, "engines": {