feat(tray): Adds a system tray icon and exit menu

- Adds the `tray-icon` attribute to `tauri` in `Cargo.toml`
- Imports system tray-related menu and builder modules
This commit is contained in:
2025-10-30 13:16:40 +08:00
parent 2d6f0fa4c4
commit 18ca4fd675
2 changed files with 19 additions and 1 deletions

View File

@@ -18,7 +18,7 @@ crate-type = ["staticlib", "cdylib", "rlib"]
tauri-build = { version = "2", features = [] } tauri-build = { version = "2", features = [] }
[dependencies] [dependencies]
tauri = { version = "2", features = [] } tauri = { version = "2", features = ["tray-icon"] }
tauri-plugin-opener = "2" tauri-plugin-opener = "2"
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"

View File

@@ -1,7 +1,10 @@
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
use crate::spary::spary_switch; use crate::spary::spary_switch;
use tauri::menu::{Menu, MenuItem};
use tauri::tray::TrayIconBuilder;
use tauri_plugin_sql::{Migration, MigrationKind}; use tauri_plugin_sql::{Migration, MigrationKind};
mod spary; mod spary;
#[cfg_attr(mobile, tauri::mobile_entry_point)] #[cfg_attr(mobile, tauri::mobile_entry_point)]
@@ -26,6 +29,7 @@ pub fn run() {
kind:MigrationKind::Up, kind:MigrationKind::Up,
} }
]; ];
tauri::Builder::default() tauri::Builder::default()
.plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_process::init())
.plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_shell::init())
@@ -38,6 +42,20 @@ pub fn run() {
) )
.plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![spary_switch]) .invoke_handler(tauri::generate_handler![spary_switch])
.setup(|app| {
let quit_item = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
let menu = Menu::with_items(app, &[&quit_item])?;
let tray = TrayIconBuilder::new()
.tooltip("spary")
.on_menu_event(move |app, event| {
if event.id().as_ref() == "quit" {
app.exit(0);
}
})
.build(app)?;
tray.set_menu(Some(menu))?;
Ok(())
})
.run(tauri::generate_context!()) .run(tauri::generate_context!())
.expect("error while running tauri application"); .expect("error while running tauri application");
} }