From 7755b3dff5c4f3cbbbfd8593f61391df5c4a10d3 Mon Sep 17 00:00:00 2001 From: Neko Ayaka Date: Thu, 3 Jul 2025 23:27:19 +0800 Subject: [PATCH] fix(stage-tamagotchi): vad load error --- apps/stage-tamagotchi/src-tauri/src/lib.rs | 122 ++++++++++++++++- .../src-tauri/src/plugins/mod.rs | 1 - .../src-tauri/src/plugins/tray/mod.rs | 124 ------------------ 3 files changed, 120 insertions(+), 127 deletions(-) delete mode 100644 apps/stage-tamagotchi/src-tauri/src/plugins/tray/mod.rs diff --git a/apps/stage-tamagotchi/src-tauri/src/lib.rs b/apps/stage-tamagotchi/src-tauri/src/lib.rs index 610e279c1..49e77c0bc 100644 --- a/apps/stage-tamagotchi/src-tauri/src/lib.rs +++ b/apps/stage-tamagotchi/src-tauri/src/lib.rs @@ -1,5 +1,13 @@ -use tauri::{WebviewUrl, WebviewWindowBuilder}; +use tauri::{ + Emitter, + Manager, + WebviewUrl, + WebviewWindowBuilder, + menu::{Menu, MenuItem, Submenu}, + tray::TrayIconBuilder, +}; use tauri_plugin_prevent_default::Flags; +use tauri_plugin_positioner::{WindowExt}; mod app; mod helpers; @@ -24,7 +32,6 @@ pub fn run() { .plugin(plugins::window_router_link::init()) .plugin(plugins::audio_transcription::init()) .plugin(plugins::audio_vad::init()) - .plugin(plugins::tray::init()) .setup(|app| { let mut builder = WebviewWindowBuilder::new(app, "main", WebviewUrl::default()) .title("AIRI") @@ -54,6 +61,117 @@ pub fn run() { )?; } + let show_item = MenuItem::with_id(app, "show", "Show", true, None::<&str>)?; + + let quit_item = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; + let settings_item = MenuItem::with_id(app, "settings", "Settings", true, None::<&str>)?; + let hide_item = MenuItem::with_id(app, "hide", "Hide", true, None::<&str>)?; + + let position_center_item = MenuItem::with_id(app, "center", "Center", true, None::<&str>)?; + let position_bottom_left_item = + MenuItem::with_id(app, "bottom-left", "Bottom Left", true, None::<&str>)?; + let position_bottom_right_item = + MenuItem::with_id(app, "bottom-right", "Bottom Right", true, None::<&str>)?; + + let position_sub_menu = Submenu::with_id_and_items( + app, + "position", + "Position", + true, + &[ + &position_center_item, + &position_bottom_left_item, + &position_bottom_right_item, + ], + )?; + + let menu = Menu::with_items( + app, + &[ + &settings_item, + &position_sub_menu, + &hide_item, + &show_item, + &quit_item, + ], + )?; + + #[cfg(debug_assertions)] + { + let show_devtools_item = + MenuItem::with_id(app, "show-devtools", "Show Devtools", true, None::<&str>)?; + menu.append_items(&[&show_devtools_item])?; + } + + #[cfg(debug_assertions)] + { + let show_devtools_item = + MenuItem::with_id(app, "show-devtools", "Show Devtools", true, None::<&str>)?; + menu.append_items(&[&show_devtools_item])?; + } + + let _ = TrayIconBuilder::new() + .icon(app.default_window_icon().unwrap().clone()) // TODO: use custom icon + .menu(&menu) + .on_menu_event(|app, event| match event.id().as_ref() { + "quit" => { + tauri_plugin_mcp::destroy(app); + let _ = app.emit("mcp_plugin_destroyed", ()); + app.cleanup_before_exit(); + app.exit(0); + } + "settings" => { + let window = app.get_webview_window("settings"); + if let Some(window) = window { + let _ = window.show(); + return; + } + + app::windows::settings::new_settings_window(app).unwrap(); + } + "center" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + let _ = window.move_window(tauri_plugin_positioner::Position::Center); + } + } + "bottom-left" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + let _ = window.move_window(tauri_plugin_positioner::Position::BottomLeft); + } + } + "bottom-right" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + let _ = window.move_window(tauri_plugin_positioner::Position::BottomRight); + } + } + "hide" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + let _ = window.hide(); + } + } + "show" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + let _ = window.show(); + } + } + #[cfg(debug_assertions)] + "show-devtools" => { + let window = app.get_webview_window("main"); + if let Some(window) = window { + window.open_devtools(); + } + }, + _ => {} + }) + .show_menu_on_left_click(true) + .build(app) + .unwrap(); + Ok(()) }) .invoke_handler(tauri::generate_handler![ diff --git a/apps/stage-tamagotchi/src-tauri/src/plugins/mod.rs b/apps/stage-tamagotchi/src-tauri/src/plugins/mod.rs index 23c2fcebf..0bd4cb705 100644 --- a/apps/stage-tamagotchi/src-tauri/src/plugins/mod.rs +++ b/apps/stage-tamagotchi/src-tauri/src/plugins/mod.rs @@ -1,5 +1,4 @@ pub mod audio_transcription; pub mod audio_vad; -pub mod tray; pub mod window_pass_through_on_hover; pub mod window_router_link; diff --git a/apps/stage-tamagotchi/src-tauri/src/plugins/tray/mod.rs b/apps/stage-tamagotchi/src-tauri/src/plugins/tray/mod.rs deleted file mode 100644 index 4e1c8012a..000000000 --- a/apps/stage-tamagotchi/src-tauri/src/plugins/tray/mod.rs +++ /dev/null @@ -1,124 +0,0 @@ -use tauri::{ - Emitter, - Manager, - Runtime, - menu::{Menu, MenuItem, Submenu}, - plugin::{Builder as PluginBuilder, TauriPlugin}, - tray::TrayIconBuilder, -}; -use tauri_plugin_positioner::WindowExt; - -use crate::app::windows::settings::new_settings_window; - -pub fn init() -> TauriPlugin { - PluginBuilder::new("proj-airi-tauri-plugin-audio-vad") - .setup(|app, _| { - let show_item = MenuItem::with_id(app, "show", "Show", true, None::<&str>)?; - - let quit_item = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; - let settings_item = MenuItem::with_id(app, "settings", "Settings", true, None::<&str>)?; - let hide_item = MenuItem::with_id(app, "hide", "Hide", true, None::<&str>)?; - - let position_center_item = MenuItem::with_id(app, "center", "Center", true, None::<&str>)?; - let position_bottom_left_item = - MenuItem::with_id(app, "bottom-left", "Bottom Left", true, None::<&str>)?; - let position_bottom_right_item = - MenuItem::with_id(app, "bottom-right", "Bottom Right", true, None::<&str>)?; - - let position_sub_menu = Submenu::with_id_and_items( - app, - "position", - "Position", - true, - &[ - &position_center_item, - &position_bottom_left_item, - &position_bottom_right_item, - ], - )?; - - let menu = Menu::with_items( - app, - &[ - &settings_item, - &position_sub_menu, - &hide_item, - &show_item, - &quit_item, - ], - )?; - - #[cfg(debug_assertions)] - { - let show_devtools_item = - MenuItem::with_id(app, "show-devtools", "Show Devtools", true, None::<&str>)?; - menu.append_items(&[&show_devtools_item])?; - } - - let _ = TrayIconBuilder::new() - .icon(app.default_window_icon().unwrap().clone()) // TODO: use custom icon - .menu(&menu) - .on_menu_event(|app, event| match event.id().as_ref() { - "quit" => { - tauri_plugin_mcp::destroy(app); - let _ = app.emit("mcp_plugin_destroyed", ()); - app.cleanup_before_exit(); - app.exit(0); - } - "settings" => { - let window = app.get_webview_window("settings"); - if let Some(window) = window { - let _ = window.show(); - return; - } - - new_settings_window(app).unwrap(); - } - "center" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - let _ = window.move_window(tauri_plugin_positioner::Position::Center); - } - } - "bottom-left" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - let _ = window.move_window(tauri_plugin_positioner::Position::BottomLeft); - } - } - "bottom-right" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - let _ = window.move_window(tauri_plugin_positioner::Position::BottomRight); - } - } - "hide" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - let _ = window.hide(); - } - } - "show" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - let _ = window.show(); - } - } - #[cfg(debug_assertions)] - "show-devtools" => { - let window = app.get_webview_window("main"); - if let Some(window) = window { - window.open_devtools(); - } - }, - _ => {} - }) - .show_menu_on_left_click(true) - .build(app) - .unwrap(); - - Ok(()) - }) - .invoke_handler(tauri::generate_handler![]) - .build() -}