36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { type BrowserWindow, ipcMain } from 'electron'
|
|
import os from 'os'
|
|
|
|
const handleIPC = (channel: string, handler: (...args: any[]) => void) => {
|
|
ipcMain.handle(channel, handler)
|
|
}
|
|
|
|
export const registerWindowIPC = (mainWindow: BrowserWindow) => {
|
|
// Hide the menu bar
|
|
mainWindow.setMenuBarVisibility(false)
|
|
|
|
// Register window IPC
|
|
handleIPC('init-window', () => {
|
|
const { width, height } = mainWindow.getBounds()
|
|
const minimizable = mainWindow.isMinimizable()
|
|
const maximizable = mainWindow.isMaximizable()
|
|
const platform = os.platform()
|
|
|
|
return { width, height, minimizable, maximizable, platform }
|
|
})
|
|
|
|
handleIPC('is-window-minimizable', () => mainWindow.isMinimizable())
|
|
handleIPC('is-window-maximizable', () => mainWindow.isMaximizable())
|
|
handleIPC('window-minimize', () => mainWindow.minimize())
|
|
handleIPC('window-maximize', () => mainWindow.maximize())
|
|
handleIPC('window-close', () => mainWindow.close())
|
|
handleIPC('window-maximize-toggle', () => {
|
|
if (mainWindow.isMaximized()) {
|
|
mainWindow.unmaximize()
|
|
} else {
|
|
mainWindow.maximize()
|
|
}
|
|
})
|
|
|
|
}
|