default-menu.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { shell } from 'electron/common';
  2. import { app, Menu } from 'electron/main';
  3. const isMac = process.platform === 'darwin';
  4. let applicationMenuWasSet = false;
  5. export const setApplicationMenuWasSet = () => {
  6. applicationMenuWasSet = true;
  7. };
  8. export const setDefaultApplicationMenu = () => {
  9. if (applicationMenuWasSet) return;
  10. const helpMenu: Electron.MenuItemConstructorOptions = {
  11. role: 'help',
  12. submenu: app.isPackaged
  13. ? []
  14. : [
  15. {
  16. label: 'Learn More',
  17. click: async () => {
  18. await shell.openExternal('https://electronjs.org');
  19. }
  20. },
  21. {
  22. label: 'Documentation',
  23. click: async () => {
  24. const version = process.versions.electron;
  25. await shell.openExternal(`https://github.com/electron/electron/tree/v${version}/docs#readme`);
  26. }
  27. },
  28. {
  29. label: 'Community Discussions',
  30. click: async () => {
  31. await shell.openExternal('https://discord.gg/electronjs');
  32. }
  33. },
  34. {
  35. label: 'Search Issues',
  36. click: async () => {
  37. await shell.openExternal('https://github.com/electron/electron/issues');
  38. }
  39. }
  40. ]
  41. };
  42. const macAppMenu: Electron.MenuItemConstructorOptions = { role: 'appMenu' };
  43. const template: Electron.MenuItemConstructorOptions[] = [
  44. ...(isMac ? [macAppMenu] : []),
  45. { role: 'fileMenu' },
  46. { role: 'editMenu' },
  47. { role: 'viewMenu' },
  48. { role: 'windowMenu' },
  49. helpMenu
  50. ];
  51. const menu = Menu.buildFromTemplate(template);
  52. Menu.setApplicationMenu(menu);
  53. };