diff --git a/app/public/images/tray_logo.png b/app/public/images/tray_logo.png new file mode 100644 index 0000000..755c51b Binary files /dev/null and b/app/public/images/tray_logo.png differ 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",