2022-03-03 17:56:00 +00:00
|
|
|
---
|
|
|
|
title: Dock
|
|
|
|
description: Configure your application's Dock presence on macOS.
|
|
|
|
slug: macos-dock
|
|
|
|
hide_title: true
|
|
|
|
---
|
|
|
|
|
|
|
|
# Dock
|
2020-10-20 01:32:40 +00:00
|
|
|
|
2018-02-19 23:09:43 +00:00
|
|
|
Electron has APIs to configure the app's icon in the macOS Dock. A macOS-only
|
2020-10-20 01:32:40 +00:00
|
|
|
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][recent-documents] and [application progress][progress-bar].
|
2018-02-19 23:09:43 +00:00
|
|
|
|
|
|
|
The custom dock is commonly used to add shortcuts to tasks the user wouldn't
|
|
|
|
want to open the whole app window for.
|
|
|
|
|
2023-04-03 11:20:10 +00:00
|
|
|
**Dock menu of Terminal.app:**
|
2018-02-19 23:09:43 +00:00
|
|
|
|
|
|
|
![Dock Menu][dock-menu-image]
|
|
|
|
|
2020-10-20 01:32:40 +00:00
|
|
|
To set your custom dock menu, you need to use the
|
|
|
|
[`app.dock.setMenu`](../api/dock.md#docksetmenumenu-macos) API,
|
|
|
|
which is only available on macOS.
|
|
|
|
|
2023-11-21 07:50:08 +00:00
|
|
|
```fiddle docs/fiddles/features/macos-dock-menu
|
|
|
|
const { app, BrowserWindow, Menu } = require('electron/main')
|
2021-05-19 01:03:13 +00:00
|
|
|
|
2023-11-21 07:50:08 +00:00
|
|
|
function createWindow () {
|
2021-05-19 01:03:13 +00:00
|
|
|
const win = new BrowserWindow({
|
|
|
|
width: 800,
|
2023-05-15 07:58:35 +00:00
|
|
|
height: 600
|
2021-05-19 01:03:13 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
win.loadFile('index.html')
|
|
|
|
}
|
2018-02-19 23:09:43 +00:00
|
|
|
|
|
|
|
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...' }
|
|
|
|
])
|
|
|
|
|
2020-10-20 01:32:40 +00:00
|
|
|
app.whenReady().then(() => {
|
2021-05-19 01:03:13 +00:00
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
app.dock.setMenu(dockMenu)
|
|
|
|
}
|
|
|
|
}).then(createWindow)
|
|
|
|
|
|
|
|
app.on('window-all-closed', () => {
|
|
|
|
if (process.platform !== 'darwin') {
|
|
|
|
app.quit()
|
|
|
|
}
|
2020-10-20 01:32:40 +00:00
|
|
|
})
|
2021-05-19 01:03:13 +00:00
|
|
|
|
|
|
|
app.on('activate', () => {
|
|
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
|
|
createWindow()
|
|
|
|
}
|
|
|
|
})
|
2018-02-19 23:09:43 +00:00
|
|
|
```
|
|
|
|
|
2020-10-20 01:32:40 +00:00
|
|
|
After launching the Electron application, right click the application icon.
|
|
|
|
You should see the custom menu you just defined:
|
|
|
|
|
|
|
|
![macOS dock menu](../images/macos-dock-menu.png)
|
|
|
|
|
2018-02-19 23:09:43 +00:00
|
|
|
[dock-menu-image]: https://cloud.githubusercontent.com/assets/639601/5069962/6032658a-6e9c-11e4-9953-aa84006bdfff.png
|
|
|
|
[recent-documents]: ./recent-documents.md
|
|
|
|
[progress-bar]: ./progress-bar.md
|