menuManage.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { app, Menu } from "electron";
  2. import { t } from "i18next";
  3. import { isMac } from "../utils";
  4. const createAppMenu = () => {
  5. if (isMac) {
  6. const template: Electron.MenuItemConstructorOptions[] = [
  7. {
  8. label: app.getName(),
  9. submenu: [
  10. { label: t("system.about"), role: "about" },
  11. { type: "separator" },
  12. { label: t("system.hide"), role: "hide" },
  13. { type: "separator" },
  14. {
  15. label: t("system.quit"),
  16. click: () => {
  17. global.forceQuit = true;
  18. app.quit();
  19. },
  20. },
  21. ],
  22. },
  23. {
  24. label: t("system.fastKeys"),
  25. submenu: [
  26. { label: t("system.copy"), role: "copy", accelerator: "CmdOrCtrl+C" },
  27. { label: t("system.paste"), role: "paste", accelerator: "CmdOrCtrl+V" },
  28. { label: t("system.cut"), role: "cut", accelerator: "CmdOrCtrl+X" },
  29. { label: t("system.undo"), role: "undo", accelerator: "CmdOrCtrl+Z" },
  30. { label: t("system.redo"), role: "redo", accelerator: "CmdOrCtrl+Y" },
  31. {
  32. label: t("system.selectAll"),
  33. role: "selectAll",
  34. accelerator: "CmdOrCtrl+A",
  35. },
  36. ],
  37. },
  38. {
  39. label: t("system.window"),
  40. role: "window",
  41. submenu: [
  42. { label: t("system.minimize"), role: "minimize", accelerator: "CmdOrCtrl+W" },
  43. { label: t("system.close"), role: "close" },
  44. ],
  45. },
  46. ];
  47. Menu.setApplicationMenu(Menu.buildFromTemplate(template));
  48. } else {
  49. Menu.setApplicationMenu(null);
  50. }
  51. };
  52. export default createAppMenu;