我希望我的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);
});

UPDATE:

我找到了这个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();
    } }
]);

Node.js相关问答推荐

node 无法验证第一个证书

Spotify Auth访问令牌给出错误代码400

即使DDB键不存在, node Lambda也不会失败,并返回NULL作为结果

带有apache Couch-db和Nano的推荐引擎:过滤特定用户的视图

Webpack:如何避免导出函数的重命名?

在 NodeJS 中使用 post 时出现错误 500TypeError: 无法解构 'req.body' 的属性 'name',因为它未定义

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

如何在nodejs中打印pdf

如何使用mongoose引用不在项目中的模型

如何使用 Remix 仅在客户端呈现组件?

当我try 从本地主机发布新产品时收到错误消息

如何找到特定文档并更新数组中特定键的值?

将环境变量从 GitHub 操作传递到 json

JavaScript & Node - 将图像文件保存到服务器但无法查看

类 WebSwapCGLLayer 在 Mac OS X /System 和 node_modules 中都实现了

在 gatsby 中安装软件包时不推荐使用的错误

node.js 变量不存在代码块

如何从 Redis 保存和检索会话

node.js 中存储的模块变量在什么范围内?

NPM:为什么要安装这个包?