61 lines
2.2 KiB
JavaScript
61 lines
2.2 KiB
JavaScript
![]() |
const { app, BrowserWindow, Menu, Tray } = require('electron/main')
|
||
|
const { nativeImage } = require('electron/common')
|
||
|
|
||
|
// save a reference to the Tray object globally to avoid garbage collection
|
||
|
let tray = null
|
||
|
|
||
|
function createWindow () {
|
||
|
const mainWindow = new BrowserWindow()
|
||
|
mainWindow.loadFile('index.html')
|
||
|
}
|
||
|
|
||
|
// The Tray object can only be instantiated after the 'ready' event is fired
|
||
|
app.whenReady().then(() => {
|
||
|
createWindow()
|
||
|
|
||
|
const red = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACTSURBVHgBpZKBCYAgEEV/TeAIjuIIbdQIuUGt0CS1gW1iZ2jIVaTnhw+Cvs8/OYDJA4Y8kR3ZR2/kmazxJbpUEfQ/Dm/UG7wVwHkjlQdMFfDdJMFaACebnjJGyDWgcnZu1/lrCrl6NCoEHJBrDwEr5NrT6ko/UV8xdLAC2N49mlc5CylpYh8wCwqrvbBGLoKGvz8Bfq0QPWEUo/EAAAAASUVORK5CYII=')
|
||
|
const green = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACOSURBVHgBpZLRDYAgEEOrEzgCozCCGzkCbKArOIlugJvgoRAUNcLRpvGH19TkgFQWkqIohhK8UEaKwKcsOg/+WR1vX+AlA74u6q4FqgCOSzwsGHCwbKliAF89Cv89tWmOT4VaVMoVbOBrdQUz+FrD6XItzh4LzYB1HFJ9yrEkZ4l+wvcid9pTssh4UKbPd+4vED2Nd54iAAAAAElFTkSuQmCC')
|
||
|
|
||
|
tray = new Tray(red)
|
||
|
tray.setToolTip('Tray Icon Demo')
|
||
|
|
||
|
const contextMenu = Menu.buildFromTemplate([
|
||
|
{
|
||
|
label: 'Open App',
|
||
|
click: () => {
|
||
|
const wins = BrowserWindow.getAllWindows()
|
||
|
if (wins.length === 0) {
|
||
|
createWindow()
|
||
|
} else {
|
||
|
wins[0].focus()
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
label: 'Set Green Icon',
|
||
|
type: 'checkbox',
|
||
|
click: ({ checked }) => {
|
||
|
checked ? tray.setImage(green) : tray.setImage(red)
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
label: 'Set Title',
|
||
|
type: 'checkbox',
|
||
|
click: ({ checked }) => {
|
||
|
checked ? tray.setTitle('Title') : tray.setTitle('')
|
||
|
}
|
||
|
},
|
||
|
{ role: 'quit' }
|
||
|
])
|
||
|
|
||
|
tray.setContextMenu(contextMenu)
|
||
|
})
|
||
|
|
||
|
app.on('window-all-closed', function () {
|
||
|
// This will prevent the app from closing when windows close
|
||
|
})
|
||
|
|
||
|
app.on('activate', function () {
|
||
|
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
||
|
})
|