Skip to content

Instantly share code, notes, and snippets.

Last active January 5, 2024 11:29
  • Star 15 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save bellbind/f65f78a35bbbd4917a8ae4a6b18c5012 to your computer and use it in GitHub Desktop.
[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

hello electrol -> hello electron

Copy link

how to load external image (url) as tray icon

Copy link

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

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