Skip to content

Instantly share code, notes, and snippets.

Last active Sep 13, 2022
What would you like to do?
[electron] Tray launcher example
"use strict";
// [run the app]
// $ npm install electron
// $ ./node_modules/.bin/electron .
const {app, nativeImage, Tray, Menu, BrowserWindow} = require("electron");
let top = {}; // prevent gc to keep windows
app.once("ready", ev => { = new BrowserWindow({
width: 800, height: 600, center: true, minimizable: false, show: false,
webPreferences: {
nodeIntegration: false,
webSecurity: true,
sandbox: true,
});"");"close", ev => {
ev.preventDefault(); // prevent quit process
// empty image as transparent icon: it can click
// see:
top.tray = new Tray(nativeImage.createEmpty());
const menu = Menu.buildFromTemplate([
{label: "Actions", submenu: [
{label: "Open Google", click: (item, window, event) => {
//console.log(item, event);;
{type: "separator"},
{role: "quit"}, // "role": system prepared action menu
top.tray.setToolTip("hello electrol");
//top.tray.setTitle("Tray Example"); // macOS only
// Option: some animated web site to tray icon image
// see:
top.icons = new BrowserWindow({
show: false, webPreferences: {offscreen: true}});
top.icons.webContents.on("paint", (event, dirty, image) => {
if (top.tray) top.tray.setImage(image.resize({width: 16, height: 16}));
app.on("before-quit", ev => {
// BrowserWindow "close" event spawn after quit operation,
// it requires to clean up listeners for "close" event"close");
// release windows
top = null;
"name": "Tray Example",
"main": "main.js"
Copy link

VadimKorobka commented Oct 23, 2017

hello electrol -> hello electron

Copy link

CliffyMk commented Feb 13, 2018

how to load external image (url) as tray icon

Copy link

sasikanth513 commented Jun 14, 2018

Is there any way to set text as tray icon? I tried setting empty image and setting tray title which renders small space at the start

Copy link

GuillermoFarias commented Jul 8, 2022

thanks ❤️

in macos, if not use nativeImage the tryIcon not show 💩

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment