Electron tray icon

uygulamanın kapat tuşuna basıldığın da kapanması yerine arka plan da çalışan uygulamaların bulunduğu ikonların arasında olması ve icon üzerine sol tıklanma işlemin de çıkan menünün electronjs ile yapılması

  • uygulama kapat tuşuna basıldığın da kapanmıyor sadece gizleniyor.
  • tray icon üzerin de sağ click yapıldığın da uygulamayı tekrar göster veya kompile çıkış yap şeklinde iki menü içeriyor.
  • tray icon sol click olayında uygulama görünür halde ise gizliyor aksi taktirde tekrar gösteriyor.

main.js

import {  BrowserWindow, Tray } from 'electron'

let win;
let isQuiting;
let isShow;
let tray;
let iconAddress = path.join(__dirname, '../public/assets/images/icon.png'); //tray icon

function createWindow() {
  win = new BrowserWindow({
    width: 1280,
    height: 760,
    minWidth:640,
    minHeight:480,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
      nodeIntegrationInWorker: true
    }
  });

  /*
  ...
  */

  /**
  * close butonuna tıklandığında tetşkleniyor
  */
  win.on('close', (event) => {
      if(!isQuiting) { //sol menu üzerinden quit denilmemiş ise
        event.preventDefault();
        winHide();
        event.returnValue = false;
        return false;
      }
  });

  win.on('closed', () => {
    win = null
  });

  tray = new Tray(iconAddress);
  tray.setToolTip("icon hover title");
  tray.on('click', () => {
    if(isShow){
      winHide();
    }
    else{
      winShow();
    }
  });

  tray.setContextMenu(Menu.buildFromTemplate([
    {
      label: 'Show App', click: function () {
        winShow();
      }
    },
    {
      label: 'Quit', click: function () {
        isQuiting = true;
        app.quit();
      }
    }
  ]));
}

/**
* ikona tıklandığında veya menüden show app denildiğinde
*/
function winShow() {
  isShow = true;
  win.show();
  win.setAlwaysOnTop(true); //uygulamayı herzaman herşeyden üstte tut
  setTimeout(function () {
    win.setAlwaysOnTop(false); //en üstte geldiğinde uygulamanın herşeyin üstünde durma olayını devre dışı bırak 
  }, 300);
}

/**
* uygulama kapatma butonuna tıklandığında
*/
function winHide() {
  isShow = false;
  win.hide();
}

Burda ara