summaryrefslogtreecommitdiffhomepage
path: root/packages/tauri/src/menu.ts
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2025-12-16 18:33:04 +0800
committerBrendan Allan <[email protected]>2025-12-16 18:33:04 +0800
commit87efd274593c1e104f839e5e103d39dcd39f341e (patch)
tree7fb8177bf0d861f27ad24edd11fea973f095ed70 /packages/tauri/src/menu.ts
parent62f080b0e45194b7930eedb1e52675fdb72c9809 (diff)
downloadopencode-87efd274593c1e104f839e5e103d39dcd39f341e.tar.gz
opencode-87efd274593c1e104f839e5e103d39dcd39f341e.zip
tauri: macos-only app menu
Diffstat (limited to 'packages/tauri/src/menu.ts')
-rw-r--r--packages/tauri/src/menu.ts94
1 files changed, 94 insertions, 0 deletions
diff --git a/packages/tauri/src/menu.ts b/packages/tauri/src/menu.ts
new file mode 100644
index 000000000..72ba9b754
--- /dev/null
+++ b/packages/tauri/src/menu.ts
@@ -0,0 +1,94 @@
+import { Menu, MenuItem, PredefinedMenuItem, Submenu } from "@tauri-apps/api/menu"
+import { type as ostype } from "@tauri-apps/plugin-os"
+
+import { runUpdater, UPDATER_ENABLED } from "./updater"
+
+export async function createMenu() {
+ if (ostype() !== "macos") return;
+
+ const menu = await Menu.new({
+ items: [
+ await Submenu.new({
+ text: "OpenCode",
+ items: [
+ await PredefinedMenuItem.new({
+ item: { About: null },
+ }),
+ await MenuItem.new({
+ enabled: UPDATER_ENABLED,
+ action: () => runUpdater(),
+ text: "Check For Updates...",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Separator",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Hide",
+ }),
+ await PredefinedMenuItem.new({
+ item: "HideOthers",
+ }),
+ await PredefinedMenuItem.new({
+ item: "ShowAll",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Separator",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Quit",
+ }),
+ ].filter(Boolean),
+ }),
+ // await Submenu.new({
+ // text: "File",
+ // items: [
+ // await MenuItem.new({
+ // enabled: false,
+ // text: "Open Project...",
+ // }),
+ // await PredefinedMenuItem.new({
+ // item: "Separator"
+ // }),
+ // await MenuItem.new({
+ // enabled: false,
+ // text: "New Session",
+ // }),
+ // await PredefinedMenuItem.new({
+ // item: "Separator"
+ // }),
+ // await MenuItem.new({
+ // enabled: false,
+ // text: "Close Project",
+ // })
+ // ]
+ // }),
+ await Submenu.new({
+ text: "Edit",
+ items: [
+ await PredefinedMenuItem.new({
+ item: "Undo",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Redo",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Separator",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Cut",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Copy",
+ }),
+ await PredefinedMenuItem.new({
+ item: "Paste",
+ }),
+ await PredefinedMenuItem.new({
+ item: "SelectAll",
+ }),
+ ],
+ }),
+ ],
+ })
+ menu.setAsAppMenu()
+}