diff --git a/electron/main/index.ts b/electron/main/index.ts index 56b50a7..71b9fc1 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -1,6 +1,7 @@ import { app, BrowserWindow, shell, ipcMain, Menu, nativeTheme } from 'electron' import { release } from 'node:os' import { join } from 'node:path' +import menu from './menu' // The built directory structure // @@ -29,8 +30,8 @@ if (!process.env.VITE_DEV_SERVER_URL && !app.requestSingleInstanceLock()) { process.exit(0) } -// remove default menu -//Menu.setApplicationMenu(null) +// Set custom application menu +Menu.setApplicationMenu(menu) // Remove electron security warnings // This warning only shows in development mode diff --git a/electron/main/menu.js b/electron/main/menu.js new file mode 100644 index 0000000..e62dcaa --- /dev/null +++ b/electron/main/menu.js @@ -0,0 +1,103 @@ +const { app, Menu } = require('electron') + +const isMac = process.platform === 'darwin' + +const template = [ + // { role: 'appMenu' } + ...(isMac ? [{ + label: app.name, + submenu: [ + { role: 'about' }, + { type: 'separator' }, + { role: 'services' }, + { type: 'separator' }, + { role: 'hide' }, + { role: 'hideOthers' }, + { role: 'unhide' }, + { type: 'separator' }, + { role: 'quit' } + ] + }] : []), + // { role: 'fileMenu' } + /*{ + label: 'File', + submenu: [ + isMac ? { role: 'close' } : { role: 'quit' } + ] + },*/ + // { role: 'editMenu' } + { + label: 'Edit', + submenu: [ + { role: 'undo' }, + { role: 'redo' }, + { type: 'separator' }, + { role: 'cut' }, + { role: 'copy' }, + { role: 'paste' }, + ...(isMac ? [ + { role: 'pasteAndMatchStyle' }, + { role: 'delete' }, + { role: 'selectAll' }, + { type: 'separator' }, + { + label: 'Speech', + submenu: [ + { role: 'startSpeaking' }, + { role: 'stopSpeaking' } + ] + } + ] : [ + { role: 'delete' }, + { type: 'separator' }, + { role: 'selectAll' } + ]) + ] + }, + // { role: 'viewMenu' } + { + label: 'View', + submenu: [ + { role: 'reload' }, + { role: 'forceReload' }, + { role: 'toggleDevTools' }, + { type: 'separator' }, + { role: 'resetZoom' }, + { role: 'zoomIn' }, + { role: 'zoomOut' }, + { type: 'separator' }, + { role: 'togglefullscreen' } + ] + }, + // { role: 'windowMenu' } + { + label: 'Window', + submenu: [ + { role: 'minimize' }, + { role: 'zoom' }, + ...(isMac ? [ + { type: 'separator' }, + { role: 'front' }, + { type: 'separator' }, + { role: 'window' } + ] : [ + { role: 'close' } + ]) + ] + }, + { + role: 'help', + submenu: [ + { + label: 'Learn More', + click: async () => { + const { shell } = require('electron') + await shell.openExternal('https://heynote.com') + } + } + ] + } +] + +export default Menu.buildFromTemplate(template) +