每天 Shaarli

一天内的所有链接,汇聚在一个页面上。

October 15, 2024

Note: Tauri窗口置顶和窗口快捷键绑定

// ./src/lib.rs

// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
    format!("Hello, {}! You've been greeted from Rust!", name)
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .setup(|app| {
            {
                use tauri::Manager;
                // 获取窗口对象
                let window = app.get_webview_window("main").unwrap();
                // 设置窗口始终在最上层
                window.set_always_on_top(true).unwrap();
            }
            {
                use tauri::{AppHandle, Manager};
                #[cfg(desktop)]
                use tauri_plugin_global_shortcut::{
                    Code, GlobalShortcutExt, Modifiers, Shortcut, ShortcutState,
                }; // 引入窗口管理模块

                let alt_x_shortcut = Shortcut::new(Some(Modifiers::ALT), Code::KeyX);

                app.handle().plugin(
                    tauri_plugin_global_shortcut::Builder::new()
                        .with_handler(move |app_handle: &AppHandle, shortcut, event| {
                            if shortcut == &alt_x_shortcut {
                                let window = app_handle.get_webview_window("main").unwrap(); // 获取窗口对象
                                match event.state() {
                                    ShortcutState::Pressed => {
                                        if window.is_minimized().unwrap() {
                                            window.unminimize().unwrap(); // 还原窗口
                                            println!("窗口已还原!");
                                        } else {
                                            window.minimize().unwrap(); // 最小化窗口
                                            println!("窗口已最小化!");
                                        }
                                    }
                                    ShortcutState::Released => {
                                        // 这里可以添加你想要在松开时执行的逻辑
                                    }
                                }
                            }
                        })
                        .build(),
                )?;

                app.global_shortcut().register(alt_x_shortcut)?;
            }

            Ok(())
        })
        .plugin(tauri_plugin_shell::init())
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}