From 5ba344dfcd0d1102da51dad2468b6ac35a9eafe9 Mon Sep 17 00:00:00 2001 From: wellkv Date: Sat, 8 Sep 2018 14:12:19 +0800 Subject: [PATCH] Minmize to tray --- src/main/index.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/index.js b/src/main/index.js index 920b2668..adc6820c 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,6 +1,6 @@ 'use strict' -import { app, ipcMain, shell, Menu } from 'electron' +import { app, ipcMain, shell, Menu, Tray } from 'electron' import Datastore from 'nedb' import empty from 'is-empty' import log from 'electron-log' @@ -39,6 +39,7 @@ if (process.env.NODE_ENV !== 'development') { } let mainWindow +let tray = null const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:9080` : `file://${__dirname}/index.html` @@ -107,6 +108,32 @@ async function getLanguage () { } } +/** + * Minimize to tray when click close button + */ +async function setMinimizeToTray () { + mainWindow.on('close', (event) => { + mainWindow.hide() + mainWindow.setSkipTaskbar(true) + event.preventDefault() + }) + tray = new Tray(path.join(__dirname, '../../build/icons/256x256.png')) + const contextMenu = Menu.buildFromTemplate([ + { label: i18n.t('main_menu.application.quit'), click: () => { mainWindow.destroy() } } + ]) + tray.setToolTip(i18n.t('main_menu.application.name')) + tray.setContextMenu(contextMenu) + tray.on('click', () => { + if (mainWindow.isVisible()) { + mainWindow.hide() + mainWindow.setSkipTaskbar(true) + } else { + mainWindow.show() + mainWindow.setSkipTaskbar(false) + } + }) +} + async function createWindow () { /** * List accounts @@ -175,6 +202,11 @@ async function createWindow () { mainWindow.on('closed', () => { mainWindow = null }) + + // Minimize to tray for win32 + if (process.platform === 'win32') { + setMinimizeToTray() + } } // Do not lower the rendering priority of Chromium when background