Electron的托盘图标在Linux上不能正常工作

4
我试图创建一个可以在系统托盘上运行的Electron应用程序,一旦单击托盘图标,应用程序窗口就会出现。
我在linux、windows和mac上进行了测试,在windows和mac上它完美地工作,当我单击托盘图标时,应用程序窗口会出现。但是在linux上,当我单击托盘图标时,一个上下文菜单出现了(尽管我没有设置),只有当我单击应用程序名称时,应用窗口才会出现。
这就是我创建托盘的方式。
let mainWindow
let tray = null;

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 400,
    height: 500,
    skipTaskbar: true,
    frame: false,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.setMenu(null)

  mainWindow.hide();

  tray = new Tray("./assets/icon@2x.png");

  tray.on('click', () => {
    mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show()
  })
  mainWindow.on('show', () => {
    tray.setHighlightMode('always')

    const pos = tray.getBounds()

    mainWindow.setPosition(pos.x - 195, pos.y + 30);
  })
  mainWindow.on('hide', () => {
    tray.setHighlightMode('never')
  })

  mainWindow.loadFile('index.html')

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

我希望它能像在Windows和Mac上一样工作,当我点击托盘图标时,应用程序窗口会出现,有人知道如何做吗?谢谢!

2个回答

1

将你的托盘方法更改为

tray.setHighlightMode()

tray.setToolTip()

这是我用来防止关闭窗口的代码

            win.on('show', () => {
                //tray.setHighlightMode('always');
                tray.setToolTip("Server Started");


            });
            win.on('hide', () => {
                //tray.popUpContextMenu();
                tray.setToolTip("Server Started");
            });

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接