Глядя на пример GitHub Desktop, кажется, что они настраивают это поведение, угоняя событие BrowserWindow close
.
In app/src/main-process/app-window.ts
:
if (__DARWIN__) {
this.window.on('close', e => {
if (!quitting) {
e.preventDefault()
Menu.sendActionToFirstResponder('hide:')
}
})
}
После предотвращения закрытия окна, Menu.sendActionToFirstResponder('hide:')
скроет все приложение вместо того, чтобы что-либо делать с самим окном. Теперь вкладка в приложение (как вкладка в любое приложение, скрытое с помощью ⌘ + H в macOS) теперь покажет его.
Обратите внимание, что вам, вероятно, следует добавить обработчики, чтобы гарантировать, что приложение закрывается, когда вы пытаетесь действительно выйти, а также. Из того же файла в репозитории GitHub Desktop (не уверен, что запускает событие IP C, но просто выполнение before-quit
отлично работает для начала) :
let quitting = false
app.on('before-quit', () => {
quitting = true
})
ipcMain.on('will-quit', (event: Electron.IpcMainEvent) => {
quitting = true
event.returnValue = true
})
См. минимальное воспроизведение. Сущность , открываемая с помощью Electron Fiddle .