From 77098c720639a421f81ee14e47250d167d7af7bd Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 02:46:30 +0000 Subject: feat(bundle): add a native menu bar listing the shortcuts One Tauri menu definition serves the macOS menu bar and the top of each window on Windows. Menu clicks run the same frontend commands as the keyboard shortcuts in the focused window. Co-Authored-By: Claude Opus 5.5 --- bundle/src-tauri/src/main.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'bundle/src-tauri/src/main.rs') diff --git a/bundle/src-tauri/src/main.rs b/bundle/src-tauri/src/main.rs index 80b28c5..9f63fc5 100644 --- a/bundle/src-tauri/src/main.rs +++ b/bundle/src-tauri/src/main.rs @@ -1,6 +1,7 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod compiler; +mod menu; mod runner; use compiler::Compiler; use runner::{OutputEvent, Runner}; @@ -11,7 +12,9 @@ use std::{ Mutex, }, }; -use tauri::{ipc::Channel, AppHandle, Manager, State, WebviewWindow, WebviewWindowBuilder}; +use tauri::{ + ipc::Channel, AppHandle, Emitter, Manager, State, WebviewWindow, WebviewWindowBuilder, +}; // Each window runs its own program, keyed by window label. #[derive(Default)] @@ -87,6 +90,17 @@ fn main() { let compiler = Compiler::load(); tauri::Builder::default() .plugin(tauri_plugin_dialog::init()) + .menu(menu::build) + // Menu items act on the focused window, like its keyboard shortcuts. + .on_menu_event(|app, event| { + let focused = app + .webview_windows() + .into_values() + .find(|window| window.is_focused().unwrap_or(false)); + if let Some(window) = focused { + let _ = window.emit_to(window.label(), "menu", event.id().as_ref()); + } + }) .manage(Runners::default()) .manage(compiler) .invoke_handler(tauri::generate_handler![ -- cgit v1.3.1-4-g156e