我希望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存储库,但是在Linux上无法正常工作。

最佳答案

我实际上是很久以前就想出来的,但是对于在这里遇到相同问题的人来说,您可以通过最小化tray并从tray还原来实现。诀窍是捕获closeminimize事件。

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恢复
var contextMenu = Menu.buildFromTemplate([
    { label: 'Show App', click:  function(){
        mainWindow.show();
    } },
    { label: 'Quit', click:  function(){
        application.isQuiting = true;
        application.quit();
    } }
]);

关于javascript - Electron.js如何最小化/关闭系统托盘的窗口并从托盘恢复窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37828758/

10-10 23:12