我希望我的Electron.js应用程序生活在系统托盘上,每当用户想做的事情,他们可以从系统托盘恢复做一些事情,并最小化/关闭它回到系统托盘。我该怎么做?
我已经从文档中看到了tray
部分,但它对实现我想要的东西没有太大帮助。
下面是我目前在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);
});
更新日期:
我找到了这个menubar repo,但它在linux上无法正常工作。
8条答案
按热度按时间wfauudbj1#
我其实很久以前就发现了这个问题,但是对于遇到同样问题的人来说,这里有一种方法可以实现最小化到
tray
并从tray
恢复。诀窍是捕获close
和minimize
事件。和从
Tray
还原2wnc66cl2#
除了以上的答案-
isQuiting
标志也值得在应用程序的before-quit
回调中设置。这样,如果操作系统或用户以其他方式请求关闭应用程序,例如通过Macos Dock任务栏的退出命令。完整的Typescript友好代码段:zrfyljdw3#
我更新了一个场景的代码,如果你想显示图标在您的系统托盘上的所有时间,直到你不退出应用程序
isr3a4wc4#
对于那些不想改变
minimize
行为的人来说,一个比使用标志更好的方法是:通常使用
mainWindow.hide()
隐藏close
事件上的窗口然后调用
mainWIndow.destroy()
强制关闭窗口,同时保证执行closed
事件处理函数。从文档中:
强制关闭窗口,网页不会发出unload和beforeunload事件,该窗口也不会发出close事件,但保证会发出closed事件。
6l7fqoea5#
这是用NW.js标记的,因为所有其他答案都是针对Electron的,所以我想我应该展示一下NW.js中的一切总是多么容易。这里设置了一个简单的演示存储库:
只需下载并运行
npm install && npm start
。icomxhvb6#
我分享我的草图,最小化隐藏在任务栏图标,菜单选项右键单击图标恢复/关闭。使用websocket/http服务器。
dphi5xsq7#
我的解决方案:
2w3kk1z58#
尝试最小化事件而不是隐藏。
这对我很有效。
hide()
正在关闭Windows。