diff --git a/ui/desktop/electron-app/src/config/menu.js b/ui/desktop/electron-app/src/config/menu.js index 5f669e4bb..addea3d1a 100644 --- a/ui/desktop/electron-app/src/config/menu.js +++ b/ui/desktop/electron-app/src/config/menu.js @@ -1,10 +1,11 @@ const { shell } = require('electron'); const appUpdater = require('../helpers/app-updater.js'); +const { isMac, isWindows } = require('../helpers/platform.js'); const generateMenuTemplate = () => { return [ // { role: 'appMenu' } - { + ...(isMac() ? [{ label: 'Boundary', submenu: [ { role: 'about' }, @@ -22,7 +23,7 @@ const generateMenuTemplate = () => { { type: 'separator' }, { role: 'quit' }, ], - }, + }] : []), // { role: 'fileMenu' } { label: 'File', @@ -38,14 +39,23 @@ const generateMenuTemplate = () => { { role: 'cut' }, { role: 'copy' }, { role: 'paste' }, - { role: 'pasteAndMatchStyle' }, - { role: 'delete' }, - { role: 'selectAll' }, - { type: 'separator' }, - { - label: 'Speech', - submenu: [{ role: 'startSpeaking' }, { role: 'stopSpeaking' }], - }, + ...(isMac() ? [ + { role: 'pasteAndMatchStyle' }, + { role: 'delete' }, + { role: 'selectAll' }, + { type: 'separator' }, + { + label: 'Speech', + submenu: [ + { role: 'startspeaking' }, + { role: 'stopspeaking' } + ] + } + ] : [ + { role: 'delete' }, + { type: 'separator' }, + { role: 'selectAll' } + ]), ], }, // { role: 'viewMenu' } @@ -68,10 +78,14 @@ const generateMenuTemplate = () => { submenu: [ { role: 'minimize' }, { role: 'zoom' }, - { type: 'separator' }, - { role: 'front' }, - { type: 'separator' }, - { role: 'window' }, + ...(isMac() ? [ + { type: 'separator' }, + { role: 'front' }, + { type: 'separator' }, + { role: 'window' } + ] : [ + { role: 'close' } + ]) ], }, { @@ -81,6 +95,9 @@ const generateMenuTemplate = () => { label: 'Documentation', click: () => shell.openExternal('https://www.boundaryproject.io'), }, + ...(isWindows() ? [ + { role: 'about' }, + ] : []) ], }, ]; diff --git a/ui/desktop/electron-app/src/helpers/platform.js b/ui/desktop/electron-app/src/helpers/platform.js new file mode 100644 index 000000000..4fccee495 --- /dev/null +++ b/ui/desktop/electron-app/src/helpers/platform.js @@ -0,0 +1,9 @@ +const os = require('os'); + +const isMac = () => Boolean(os.type().match(/darwin/i)); +const isWindows = () => Boolean(os.type().match(/(windows)/i)); + +module.exports = { + isMac: isMac, + isWindows: isWindows, +} \ No newline at end of file