import { Menu, BrowserWindow, MenuItemConstructorOptions } from "electron" export function createApplicationMenu(mainWindow: BrowserWindow) { const isMac = process.platform === "darwin" const template: MenuItemConstructorOptions[] = [ ...(isMac ? [ { label: "CodeNomad", submenu: [ { role: "about" as const }, { type: "separator" as const }, { role: "hide" as const }, { role: "hideOthers" as const }, { role: "unhide" as const }, { type: "separator" as const }, { role: "quit" as const }, ], }, ] : []), { label: "File", submenu: [ { label: "New Instance", accelerator: "CmdOrCtrl+N", click: () => { mainWindow.webContents.send("menu:newInstance") }, }, { type: "separator" as const }, isMac ? { role: "close" as const } : { role: "quit" as const }, ], }, { label: "Edit", submenu: [ { role: "undo" as const }, { role: "redo" as const }, { type: "separator" as const }, { role: "cut" as const }, { role: "copy" as const }, { role: "paste" as const }, ...(isMac ? [{ role: "pasteAndMatchStyle" as const }, { role: "delete" as const }, { role: "selectAll" as const }] : [{ role: "delete" as const }, { type: "separator" as const }, { role: "selectAll" as const }]), ], }, { label: "View", submenu: [ { role: "reload" as const }, { role: "forceReload" as const }, { role: "toggleDevTools" as const }, { type: "separator" as const }, { role: "resetZoom" as const }, { role: "zoomIn" as const }, { role: "zoomOut" as const }, { type: "separator" as const }, { role: "togglefullscreen" as const }, ], }, { label: "Window", submenu: [ { role: "minimize" as const }, { role: "zoom" as const }, ...(isMac ? [ { type: "separator" as const }, { role: "front" as const }, { type: "separator" as const }, { role: "window" as const }, ] : [{ role: "close" as const }]), ], }, ] const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) }