繁体   English   中英

Electron TrayIcon 在 Linux 上无法正常工作

[英]Electron TrayIcon not working properly on linux

我正在尝试制作一个在系统托盘上运行的 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 上正常工作,当我单击托盘图标时,出现应用程序窗口,有人知道怎么做吗? 谢谢!

这是电子项目的一个悬而未决的问题,您的代码没有任何问题。

https://github.com/electron/electron/issues/14941

只需更改您的托盘方法

tray.setHighlightMode()

tray.setToolTip()

这是我的代码,以防止接近胜利

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM