module.exports = { init } var path = require('path') var electron = require('electron') var windows = require('./windows') var trayIcon function init () { // No tray icon on OSX if (process.platform === 'darwin') return trayIcon = new electron.Tray(path.join(__dirname, '..', 'static', 'WebTorrentSmall.png')) // On Windows, left click to open the app, right click for context menu // On Linux, any click (right or left) opens the context menu trayIcon.on('click', showApp) // Show the tray context menu, and keep the available commands up to date updateTrayMenu() windows.main.on('show', updateTrayMenu) windows.main.on('hide', updateTrayMenu) } function updateTrayMenu () { var showHideMenuItem if (windows.main.isVisible()) { showHideMenuItem = { label: 'Hide to tray', click: hideApp } } else { showHideMenuItem = { label: 'Show', click: showApp } } var contextMenu = electron.Menu.buildFromTemplate([ showHideMenuItem, { label: 'Quit', click: quitApp } ]) trayIcon.setContextMenu(contextMenu) } function showApp () { windows.main.show() } function hideApp () { windows.main.hide() } function quitApp () { windows.main.send('dispatch', 'saveState') /* try to save state on exit */ electron.ipcMain.once('savedState', () => electron.app.quit()) setTimeout(() => electron.app.quit(), 2000) /* exit after at most 2 secs */ }