From 90841af9300a1884748961641a818c611ed4e7fd Mon Sep 17 00:00:00 2001 From: gaoshuaixing Date: Tue, 23 Feb 2021 16:04:25 +0800 Subject: [PATCH] tray --- app/public/images/tray_logo.png | Bin 0 -> 435 bytes electron/tray.js | 38 ++++++++++++++++++++++++++++++++ main.js | 6 +++++ package.json | 1 + 4 files changed, 45 insertions(+) create mode 100644 app/public/images/tray_logo.png create mode 100644 electron/tray.js diff --git a/app/public/images/tray_logo.png b/app/public/images/tray_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..755c51b82eadb3ef6850a92a7781174614c66ebf GIT binary patch literal 435 zcmV;k0ZjghP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Z2(iK~y+T&5}JY z1W^=*pRhrw35iBUBRYvnLn$b>STlEacE^g3sQdt>icUcyJ~}$3io#!^^YIVXJ7@2m z?2heulQ(noKIfjf_vY|Vv`mE^Mu{0Kd?Z&HGG1k{FF$11I1x3PyyN)P`pca0O~Q$B z#|kNL+W1lMrg+SiaV-wCp{>HI73a=aRpG4hgiTuFvC?k7#k_G9>`_-iosmvZl4D(e zY_rX@Pf7|6jv4StuR?=eCVWzo(*g5>h&!z>%qf>T@{IAAHRF!^f@j7Tj4NpQH+WX~ zWKQKebH+o1nAd`5a*ZY9U00}df|9}&BBp#&QfSa%+$X&X4Z?|jDKvP{!1PnhhHo(G zlaicfYF`EU-5ihRR8BZI9%&A8p77Gci$O|Q)H9w6Tx)$}PPx^$Gl}^?HN+Eb2)rRX d&W!(|;0IC|aNpD0oW1}6002ovPDHLkV1jyCyFUN` literal 0 HcmV?d00001 diff --git a/electron/tray.js b/electron/tray.js new file mode 100644 index 0000000..1d479df --- /dev/null +++ b/electron/tray.js @@ -0,0 +1,38 @@ +'use strict'; + +const {app, Tray, Menu} = require('electron'); +const path = require('path'); +const pkg = require('../package.json'); + +module.exports = () => { + MAIN_WINDOW.on('close', (event) => { + if (!CAN_QUIT) { + MAIN_WINDOW.hide(); + MAIN_WINDOW.setSkipTaskbar(true); + event.preventDefault(); + } + }); + MAIN_WINDOW.show(); + let trayMenuTemplate = [{ + label: '退出', + click: function () { + MAIN_WINDOW.destroy(); + app.quit() + } + }] + let iconPath = path.join(app.getAppPath(), '/app/public/images/tray_logo.png'); + APP_TRAY = new Tray(iconPath); + const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); + APP_TRAY.setToolTip(pkg.softName); + APP_TRAY.setContextMenu(contextMenu); + APP_TRAY.on('click', function(){ + if (MAIN_WINDOW.isVisible()) { + MAIN_WINDOW.hide(); + MAIN_WINDOW.setSkipTaskbar(false); + } else { + MAIN_WINDOW.show(); + MAIN_WINDOW.setSkipTaskbar(true); + } + }); + return APP_TRAY; +} \ No newline at end of file diff --git a/main.js b/main.js index 6848857..63daad1 100644 --- a/main.js +++ b/main.js @@ -5,9 +5,12 @@ const setup = require('./electron/setup') const electronConfig = require('./electron/config') const storage = require('./electron/storage') const is = require('electron-is') +const setTray = require('./electron/tray') // main window global.MAIN_WINDOW = null +global.APP_TRAY = null; +global.CAN_QUIT = false; // Initialize setup() @@ -71,6 +74,9 @@ async function createWindow () { // loding page MAIN_WINDOW.loadURL(path.join('file://', __dirname, '/app/public/loading.html')) + // tray + setTray(); + // egg server await startServer(eggConfig) diff --git a/package.json b/package.json index a67890d..3adf678 100755 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.7.1", "description": "A fast, desktop software development framework", "main": "main.js", + "softName": "electron-egg", "scripts": { "start": "electron .", "dev": "electron . --env=local",