Cross-platform Node.js class to create system trays.
Note: This package does not support macOS. (See issue #2)
$ npm install ctray
let Tray = require("ctray");
let tray = new Tray("path/to/icon");
tray.tooltip = "Simple Example Tray"; // Sets the tooltip to display
tray.menu = [ // Sets the tray menu
"Example",
"-",
{text: "Quit", callback: _ => tray.close()}
])
tray.on("close", () => console.log("Tray Closed"));
See the example file for a more complex example.
Creates the tray's instance displays the icon on the taskbar. Tray extends from EventEmitter, and it emits "close" once it is closed.
Requests the tray to close and emits "close".
Getter/Setter for the tooltip to show over the tray.
Getter/Setter for the absolute path to the icon to display.
Setter for the menu of the tray. Each element of the array can either be a String or an Object with the following format:
type MenuItem = {
text: string, // Label of the element in the tray. Required
checked?: boolean, // Item starts checked? defaults: false
disabled?: boolean, // Item is disabled? defaults: false
callback?: () => void, // Function without arguments to run on click.
submenu?: MenuItem[], // Array With the same rules as menu
}
Note that getting this property will return the menu Array as an Object to prevent Array functions that add/remove elements as they are not supported.
Setting text = '-'
creates a MenuItem of type "separator". Its text cannot be changed nor have submenus.
- Improve documentation.
-
Test in other plattforms. - Create package.json Scripts.
-
Allow changing the menu dynamically. - Test in MacOS
- Generate ico from svg command:
$ convert -density 2048 -background transparent icon.svg -define icon:auto-resize -colors 256 icon.ico