Dock

Electron有API来配置macOS Dock中的应用程序图标。 可以使用 API 来创建一个自定义的 Dock 菜单项,这个 API 是 macOS 独占的,但是 Electron 也会默认使用应用的 Dock 图标来实现一些可以跨平台的功能,例如最近文件应用程序进度

一个自定义的Dock项也普遍用于为那些用户不愿意为之打开整个应用窗口的任务添加快捷方式。

Terminal.app 的 Dock 菜单:

Dock 菜单

要设置您的自定义 dock 菜单,您需要使用 app.dock.setmenu API,它仅在 macOS 上可用。

docs/fiddles/features/macos-dock-menu (27.0.1)Open in Fiddle

  • main.js
  • index.html
  1. const { app, BrowserWindow, Menu } = require('electron')
  2. function createWindow () {
  3. const win = new BrowserWindow({
  4. width: 800,
  5. height: 600
  6. })
  7. win.loadFile('index.html')
  8. }
  9. const dockMenu = Menu.buildFromTemplate([
  10. {
  11. label: 'New Window',
  12. click () { console.log('New Window') }
  13. }, {
  14. label: 'New Window with Settings',
  15. submenu: [
  16. { label: 'Basic' },
  17. { label: 'Pro' }
  18. ]
  19. },
  20. { label: 'New Command...' }
  21. ])
  22. app.whenReady().then(() => {
  23. if (process.platform === 'darwin') {
  24. app.dock.setMenu(dockMenu)
  25. }
  26. }).then(createWindow)
  27. app.on('window-all-closed', () => {
  28. if (process.platform !== 'darwin') {
  29. app.quit()
  30. }
  31. })
  32. app.on('activate', () => {
  33. if (BrowserWindow.getAllWindows().length === 0) {
  34. createWindow()
  35. }
  36. })
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Hello World!</title>
  6. <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
  7. </head>
  8. <body>
  9. <h1>Hello World!</h1>
  10. <p>Right click the dock icon to see the custom menu options.</p>
  11. </body>
  12. </html>

启动 Electron 应用程序后,右键点击应用程序图标。 您应该可以看到您刚刚设置的自定义菜单:

macOS dock 菜单