use tauri::{ menu::{Menu, MenuItem}, tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, AppHandle, Manager, }; pub fn build(app: &tauri::App) -> tauri::Result<()> { let show_item = MenuItem::with_id(app, "show", "Показать", true, None::<&str>)?; let quit_item = MenuItem::with_id(app, "quit", "Выход", true, None::<&str>)?; let menu = Menu::with_items(app, &[&show_item, &quit_item])?; TrayIconBuilder::new() .icon(app.default_window_icon().cloned().expect("app icon missing")) .menu(&menu) .show_menu_on_left_click(false) .on_menu_event(|app, event| match event.id.as_ref() { "quit" => app.exit(0), "show" => show_main_window(app), _ => {} }) .on_tray_icon_event(|tray, event| { if let TrayIconEvent::Click { button: MouseButton::Left, button_state: MouseButtonState::Up, .. } = event { show_main_window(tray.app_handle()); } }) .build(app)?; Ok(()) } fn show_main_window(app: &AppHandle) { if let Some(window) = app.get_webview_window("main") { let _ = window.show(); let _ = window.set_focus(); } }