menu.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { Menu, MenuItem, PredefinedMenuItem, Submenu } from "@tauri-apps/api/menu"
  2. import { type as ostype } from "@tauri-apps/plugin-os"
  3. import { runUpdater, UPDATER_ENABLED } from "./updater"
  4. export async function createMenu() {
  5. if (ostype() !== "macos") return
  6. const menu = await Menu.new({
  7. items: [
  8. await Submenu.new({
  9. text: "OpenCode",
  10. items: [
  11. await PredefinedMenuItem.new({
  12. item: { About: null },
  13. }),
  14. await MenuItem.new({
  15. enabled: UPDATER_ENABLED,
  16. action: () => runUpdater({ alertOnFail: true }),
  17. text: "Check For Updates...",
  18. }),
  19. await PredefinedMenuItem.new({
  20. item: "Separator",
  21. }),
  22. await PredefinedMenuItem.new({
  23. item: "Hide",
  24. }),
  25. await PredefinedMenuItem.new({
  26. item: "HideOthers",
  27. }),
  28. await PredefinedMenuItem.new({
  29. item: "ShowAll",
  30. }),
  31. await PredefinedMenuItem.new({
  32. item: "Separator",
  33. }),
  34. await PredefinedMenuItem.new({
  35. item: "Quit",
  36. }),
  37. ].filter(Boolean),
  38. }),
  39. // await Submenu.new({
  40. // text: "File",
  41. // items: [
  42. // await MenuItem.new({
  43. // enabled: false,
  44. // text: "Open Project...",
  45. // }),
  46. // await PredefinedMenuItem.new({
  47. // item: "Separator"
  48. // }),
  49. // await MenuItem.new({
  50. // enabled: false,
  51. // text: "New Session",
  52. // }),
  53. // await PredefinedMenuItem.new({
  54. // item: "Separator"
  55. // }),
  56. // await MenuItem.new({
  57. // enabled: false,
  58. // text: "Close Project",
  59. // })
  60. // ]
  61. // }),
  62. await Submenu.new({
  63. text: "Edit",
  64. items: [
  65. await PredefinedMenuItem.new({
  66. item: "Undo",
  67. }),
  68. await PredefinedMenuItem.new({
  69. item: "Redo",
  70. }),
  71. await PredefinedMenuItem.new({
  72. item: "Separator",
  73. }),
  74. await PredefinedMenuItem.new({
  75. item: "Cut",
  76. }),
  77. await PredefinedMenuItem.new({
  78. item: "Copy",
  79. }),
  80. await PredefinedMenuItem.new({
  81. item: "Paste",
  82. }),
  83. await PredefinedMenuItem.new({
  84. item: "SelectAll",
  85. }),
  86. ],
  87. }),
  88. ],
  89. })
  90. menu.setAsAppMenu()
  91. }