原文:https://github.com/electron/electron/blob/master/docs/api/tray.md
譯者:Lin
添加圖標(biāo)和右鍵菜單到系統(tǒng)的通知區(qū)域
進(jìn)程:主進(jìn)程
Tray是一個EventEmitter。
const {app, Menu, Tray} = require('electron')
let tray = null
app.on('ready', () => {
tray = new Tray('/path/to/my/icon')
const contextMenu = Menu.buildFromTemplate([
{label: 'Item1', type: 'radio'},
{label: 'Item2', type: 'radio'},
{label: 'Item3', type: 'radio', checked: true},
{label: 'Item4', type: 'radio'}
])
tray.setToolTip('This is my application.')
tray.setContextMenu(contextMenu)
})
平臺的局限性:
- Linux中如果支持應(yīng)用指示器那么應(yīng)用指示器將被使用,否則將使用
GtkStatusIcon代替。 - Linux發(fā)行版中支持應(yīng)用指示器,你需要安裝
libappindicator1來使tray圖標(biāo)工作。 - 當(dāng)有右鍵菜單時才會展示應(yīng)用指示器。
- 當(dāng)Linux中的應(yīng)用指示器被使用,
click事件將被忽略。 - Linux中為了使個別的
MenuItems的改變生效,你需要再次調(diào)用setContextMenu。例如:
const {app, Menu, Tray} = require('electron')
let appIcon = null
app.on('ready', () => {
appIcon = new Tray('/path/to/my/icon')
const contextMenu = Menu.buildFromTemplate([
{label: 'Item1', type: 'radio'},
{label: 'Item2', type: 'radio'}
])
// Make a change to the context menu
contextMenu.items[1].checked = false
// Call this again for Linux because we modified the context menu
appIcon.setContextMenu(contextMenu)
})
- Windows中建議使用ICO格式的圖標(biāo)來獲得最好的視覺效果。
如果你想在所有平臺上保持完全相同的行為,你需要不依賴點擊事件并且將右鍵菜單依附在托盤圖標(biāo)上。
new Tray(image)
-
image(NativeImage | String)類型
通過image創(chuàng)建一個托盤圖標(biāo)。
實例的事件
Tray模塊分發(fā)以下事件:
事件: 'click'
-
eventEvent類型-
altKeyBoolean類型 -
shiftKeyBoolean類型 -
ctrlKeyBoolean類型 -
metaKeyBoolean類型
-
-
boundsRectangle類型 - 托盤圖標(biāo)的邊界。
當(dāng)托盤圖片被點擊的時候被分發(fā)。
事件: 'right-click' MacOS Windows
-
eventEvent-
altKeyBoolean -
shiftKeyBoolean -
ctrlKeyBoolean -
metaKeyBoolean
-
-
boundsRectangle類型 - 托盤圖標(biāo)的邊界。
當(dāng)托盤圖片被右鍵點擊的時候被分發(fā)。
事件: 'double-click' MacOS Windows
-
eventEvent-
altKeyBoolean -
shiftKeyBoolean -
ctrlKeyBoolean -
metaKeyBoolean
-
-
boundsRectangle類型 - 托盤圖標(biāo)的邊界。
當(dāng)托盤圖片被雙擊的時候被分發(fā)。
事件: 'balloon-show' Windows
當(dāng)托盤氣球展示的時候被分發(fā)。
事件: 'balloon-click' Windows
當(dāng)托盤氣球被點擊的時候被分發(fā)。
事件: 'balloon-closed' Windows
當(dāng)托盤氣球因為超時關(guān)閉或者用戶手動點擊關(guān)閉時被分發(fā)。
事件: 'drop' MacOS
任何被拖動的項目被拖動到托盤圖標(biāo)上的時候被分發(fā)。
事件: 'drop-files' MacOS
-
eventEvent類型 -
filesString[]類型 - 被拖動的文件的路徑。
被拖動的文件拖動到托盤圖標(biāo)里面的時候被分發(fā)。
事件: 'drop-text' MacOS
-
eventEvent類型 -
textString類型 - 被拖動的文本字符串。
被拖動的文本拖動到托盤圖標(biāo)里面的時候被分發(fā)。
事件: 'drag-enter' MacOS
當(dāng)一個拖動操作進(jìn)入到托盤圖標(biāo)的時候被分發(fā)。
事件: 'drag-leave' MacOS
當(dāng)一個拖動操作離開托盤圖標(biāo)的時候被分發(fā)。
事件: 'drag-end' MacOS
當(dāng)拖動操作在托盤圖標(biāo)上釋放或在其他的位置釋放時被分發(fā)。
實例的方法
Tray類有以下方法:
tray.destroy()
立刻銷毀托盤圖標(biāo)。
tray.setImage(image)
-
image(NativeImage | String)類型
設(shè)置托盤圖標(biāo)。
tray.setPressedImage(image) MacOS
-
imageNativeImage類型
設(shè)置MacOS下按下托盤圖標(biāo)是的托盤圖標(biāo)。
tray.setToolTip(toolTip)
-
toolTipString類型
設(shè)置托盤圖標(biāo)的懸停文本。
tray.setTitle(title) MacOS
-
titleString類型
設(shè)置顯示在狀態(tài)欄中托盤圖標(biāo)旁邊的文字。
tray.setHighlightMode(mode) MacOS
-
modeString類型 - 高亮模式有以下值類型:-
selection- 托盤圖標(biāo)被點擊的時候和右鍵菜單打開的時候高亮。這個是默認(rèn)值。 -
always- 托盤圖標(biāo)維持高亮狀體。 -
never- 托盤圖標(biāo)沒有高亮狀態(tài)。
-
設(shè)置什么時候托盤的圖標(biāo)背景變成高亮狀態(tài)(藍(lán)色)。
注意:當(dāng)窗口是否可見狀態(tài)改變的時候,你可以使用BrowserWindow的highlightMode在'never'和'always'模式指尖切換。
const {BrowserWindow, Tray} = require('electron')
const win = new BrowserWindow({width: 800, height: 600})
const tray = new Tray('/path/to/my/icon')
tray.on('click', () => {
win.isVisible() ? win.hide() : win.show()
})
win.on('show', () => {
tray.setHighlightMode('always')
})
win.on('hide', () => {
tray.setHighlightMode('never')
})
tray.displayBalloon(options) Windows
-
optionsObject類型-
icon(NativeImage | String)類型(可選參數(shù)) -
titleString類型(可選參數(shù)) -
contentString類型(可選參數(shù))
-
展示一個托盤氣球。
tray.popUpContextMenu([menu, position]) MacOS Windows
-
menuMenu類型(可選參數(shù)) -
positionObject類型(可選參數(shù))- 彈出的位置。-
xInteger -
yInteger
-
彈出一個托盤圖標(biāo)的右鍵菜單。當(dāng)menu參數(shù)被設(shè)置,menu將被展示代替托盤圖標(biāo)的右鍵菜單。
position只在Windows中有效,并且默認(rèn)值是(0, 0)。
tray.setContextMenu(menu)
-
menuMenu類型
給這個托盤圖標(biāo)設(shè)置右鍵菜單。
tray.getBounds() MacOS Windows
返回值為Rectangle類型
作為Object的托盤圖標(biāo)的bounds。
tray.isDestroyed()
返回值為Boolean類型 - 托盤圖標(biāo)是否被銷毀。