diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a7f089b..036b3b2 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ tauri-build = { version = "1.2.1", features = [] } [dependencies] serde_json = "1.0.91" serde = { version = "1.0.152", features = ["derive"] } -tauri = { version = "1.2.3", features = ["api-all", "devtools", "updater"] } +tauri = { version = "1.2.3", features = ["api-all", "devtools", "global-shortcut", "updater"] } [features] # by default Tauri runs in production mode diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index eee64e1..350a6d2 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -5,6 +5,7 @@ #[cfg(target_os = "macos")] mod menu; +mod shortcuts; fn main() { let builder = tauri::Builder::default(); @@ -12,7 +13,17 @@ fn main() { #[cfg(target_os = "macos")] let builder = builder.menu(menu::menu()); - builder - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} \ No newline at end of file + builder + .build(tauri::generate_context!()) + .expect("error while building tauri application") + .run(run_event_handler) +} + +fn run_event_handler(app: &tauri::AppHandle, event: tauri::RunEvent) { + match event { + tauri::RunEvent::Ready => { + shortcuts::ready_event_handler(app); + } + _ => {} + } +} diff --git a/src-tauri/src/shortcuts.rs b/src-tauri/src/shortcuts.rs new file mode 100644 index 0000000..1dbb4bd --- /dev/null +++ b/src-tauri/src/shortcuts.rs @@ -0,0 +1,25 @@ +use tauri::{ GlobalShortcutManager, Manager }; + +//use crate::tray; + +pub fn ready_event_handler( + app: &tauri::AppHandle +) { + let manager = app.global_shortcut_manager(); + manager.clone().register("CmdOrCtrl+w", hide_closure(app)).unwrap(); + manager.clone().register("CmdOrCtrl+q", close_closure(app)).unwrap(); +} + +fn hide_closure(app: &tauri::AppHandle) -> impl Fn() { + let window = app.get_window("main").unwrap(); + //let app = app.clone(); + return move || { + window.hide().unwrap(); + //tray::toggle_window_state(window.clone(), app.tray_handle_by_id(tray::TRAY_LABEL).unwrap()) + } +} + +fn close_closure(app: &tauri::AppHandle) -> impl Fn() { + let window = app.get_window("main").unwrap(); + return move || window.close().unwrap(); +} \ No newline at end of file