Skip to main content

Dock

Electron 具有用于在 macOS Dock 中配置应用图标的 API。存在仅适用于 macOS 的 API 用于创建自定义停靠菜单,但 Electron 还使用应用停靠图标作为 最近的文档应用进度 等跨平台功能的入口点。

¥Electron has APIs to configure the app's icon in the macOS Dock. A macOS-only API exists to create a custom dock menu, but Electron also uses the app dock icon as the entry point for cross-platform features like recent documents and application progress.

自定义停靠栏通常用于为用户不想打开整个应用窗口的任务添加快捷方式。

¥The custom dock is commonly used to add shortcuts to tasks the user wouldn't want to open the whole app window for.

Terminal.app 的 Dock 菜单:

¥Dock menu of Terminal.app:

Dock Menu

要设置自定义停靠菜单,你需要使用 app.dock.setMenu API,该 API 仅在 macOS 上可用。

¥To set your custom dock menu, you need to use the app.dock.setMenu API, which is only available on macOS.

const { app, BrowserWindow, Menu } = require('electron/main')

function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600
})

win.loadFile('index.html')
}

const dockMenu = Menu.buildFromTemplate([
{
label: 'New Window',
click () { console.log('New Window') }
}, {
label: 'New Window with Settings',
submenu: [
{ label: 'Basic' },
{ label: 'Pro' }
]
},
{ label: 'New Command...' }
])

app.whenReady().then(() => {
if (process.platform === 'darwin') {
app.dock.setMenu(dockMenu)
}
}).then(createWindow)

app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})

app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})

启动 Electron 应用后,右键单击应用图标。你应该看到刚刚定义的自定义菜单:

¥After launching the Electron application, right click the application icon. You should see the custom menu you just defined:

macOS dock menu