electron-tray2
Version:
Very simple package to add tray icon behaviour to an electron app
81 lines (60 loc) • 2.61 kB
Markdown
**NOTE:** This is a fork from https://github.com/dhharker/electron-tray by David Harker <david@dhharker.net>.
Very basic at the moment, this module is either going nowhere or I might extend it to deal with app lifecycle management, window toggling etc.
It was built on:
- NodeJS: v22.14.0
- npm: v11.2.0
- electron: v36.3.1
It mught not work on older versions. If this is the case, please use the original npm package `electron-tray` by David.
```typescript
import TrayControl from 'electron-tray2';
```
```javascript
import TrayControl from 'electron-tray2';
```
```javascript
const TrayControl = require('electron-tray2').default;
```
```javascript
const trayControl = new TrayControl(app, iconPath[, menu]);
```
...where `menu` is passed to [`electron.MenuItem`](https://electron.atom.io/docs/api/menu-item/) via [`electron.Menu.buildFromTemplate()`](https://electron.atom.io/docs/api/menu/) i.e. it's just a normal electron menu.
```javascript
const { app, BrowserWindow } = require('electron');
const TrayControl = require('electron-tray2').default;
const path = require('path');
let trayControl;
app.whenReady().then(() => {
createWindow();
const iconPath = path.join(__dirname, 'icon.png');
trayControl = new TrayControl(app, iconPath);
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
```
```javascript
import { app, BrowserWindow } from 'electron';
import TrayControl from 'electron-tray2';
import path from 'path';
let trayControl;
app.whenReady().then(() => {
createWindow();
const iconPath = path.join(__dirname, 'icon.png');
trayControl = new TrayControl(app, iconPath);
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
```
- [ ] If clean way to do it, add ability to persist app while all windows are closed, minimise/close to tray etc.
- [ ] If Windows machine available, investigate integration of [`electron-promote-windows-tray-items`](https://www.npmjs.com/package/electron-promote-windows-tray-items) (Issues [#1](https://github.com/mixmaxhq/electron-promote-windows-tray-items/issues/1) and [#2](https://github.com/mixmaxhq/electron-promote-windows-tray-items/issues/2) may be blockers and will this thing even work with newer electron versions?).
- [x] Basic functionality works. You can haz icon, and menu.
- [x] Updated to 28.05.2025 packages