我希望我的Electron.js应用程序驻留在系统托盘上,并且每当用户要执行某项操作时,他们都可以从系统托盘中进行还原,则可以执行某些操作并将其最小化/关闭回系统托盘。我怎么做?
我已经tray从文档中看到了这一部分,但是对于实现我想要的内容并没有多大帮助。
tray
这是我到目前为止在main.js文件上得到的
main.js
var application = require('app'), BrowserWindow = require('browser-window'), Menu = require('menu'), Tray = require('tray'); application.on('ready', function () { var mainWindow = new BrowserWindow({ width: 650, height: 450, 'min-width': 500, 'min-height': 200, 'accept-first-mouse': true, // 'title-bar-style': 'hidden', icon:'./icon.png' }); mainWindow.loadUrl('file://' + __dirname + '/src/index.html'); mainWindow.on('closed', function () { mainWindow = null; }); mainWindow.setMenu(null); var appIcon = null; appIcon = new Tray('./icon-resized.png'); var contextMenu = Menu.buildFromTemplate([ { label: 'Restore', type: 'radio' } ]); appIcon.setToolTip('Electron.js App'); appIcon.setContextMenu(contextMenu); });
更新:
我找到了这个菜单栏存储库,但是在Linux上无法正常工作。
我实际上是很久前才弄清楚的,但是对于在这里遇到相同问题的人们来说,是一种可以使最小化tray和恢复的方法tray。诀窍是捕捉close和minimize事件。
close
minimize
var BrowserWindow = require('browser-window'), var mainWindow = new BrowserWindow({ width: 850, height: 450, title: "TEST", icon:'./icon.png' }); mainWindow.on('minimize',function(event){ event.preventDefault(); mainWindow.hide(); }); mainWindow.on('close', function (event) { if(!application.isQuiting){ event.preventDefault(); mainWindow.hide(); } return false; });
并从 Tray
Tray
var contextMenu = Menu.buildFromTemplate([ { label: 'Show App', click: function(){ mainWindow.show(); } }, { label: 'Quit', click: function(){ application.isQuiting = true; application.quit(); } } ]);