use tauri::{ menu::{Menu, MenuItem}, tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, Manager, Runtime, }; pub fn create_tray(app: &tauri::AppHandle) -> tauri::Result<()> { let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; let menu = Menu::with_items(app, &[&quit_i])?; let _ = TrayIconBuilder::with_id("tray") .icon(app.default_window_icon().unwrap().clone()) .menu(&menu) .show_menu_on_left_click(false) .on_menu_event(move |app, event| match event.id.as_ref() { "quit" => { app.exit(0); } // Add more events here _ => {} }) .on_tray_icon_event(|tray, event| { if let TrayIconEvent::Click { button: MouseButton::Left, button_state: MouseButtonState::Up, .. } = event { let app = tray.app_handle(); if let Some(window) = app.get_webview_window("main") { let _ = window.show(); let _ = window.set_focus(); } } }) .build(app); Ok(()) } // Tray Menu // let quit = CustomMenuItem::new("quit".to_string(), "Quit"); // let hide = CustomMenuItem::new("hide".to_string(), "Hide"); // let tray_menu = SystemTrayMenu::new() // insert the menu items here // .add_item(hide) // .add_item(quit); // .add_native_item(SystemTrayMenuItem::Separator) // let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app)?; // let menu = MenuBuilder::new(app).items(&[&toggle]).build()?; // Setup Tray // let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; // let _ = TrayIconBuilder::new() // .menu(&menu) // .on_menu_event(move |_, event| { // match event.id().as_ref() { // "toggle" => { // println!("toggle clicked"); // } // _ => (), // } // // match event { // // SystemTrayEvent::LeftClick { position: _, size: _, .. } => { // // let window = app.get_window("main").unwrap(); // // window.show().unwrap(); // // window.set_focus().unwrap(); // // // thread::sleep(Duration::from_millis(100)); // // // window.set_always_on_top(false).unwrap(); // // println!("system tray received a left click"); // // } // // SystemTrayEvent::RightClick { position: _, size: _, .. } => { // // // let window = app.get_window("main").unwrap(); // // // window.hide().unwrap(); // // println!("system tray received a right click"); // // } // // SystemTrayEvent::DoubleClick { position: _, size: _, .. } => { // // println!("system tray received a double click"); // // } // // SystemTrayEvent::MenuItemClick { id, .. } => // // match id.as_str() { // // "quit" => { // // std::process::exit(0); // // } // // "hide" => { // // let window = app.get_window("main").unwrap(); // // window.hide().unwrap(); // // } // // _ => {} // // } // // _ => {} // // } // }) // .on_tray_icon_event(|tray, event| { // if event.click_type == ClickType::Left { // let app = tray.app_handle(); // if let Some(webview_window) = app.get_webview_window("main") { // let _ = webview_window.show(); // let _ = webview_window.set_focus(); // } // } // }) // .build(app) // .unwrap();