feat: use tauri_plugin_window_state

This commit is contained in:
huzibaca 2024-10-30 18:52:53 +08:00
parent 2493f463f3
commit 12df415dfd
5 changed files with 35 additions and 6 deletions

16
src-tauri/Cargo.lock generated
View File

@ -1013,6 +1013,7 @@ dependencies = [
"tauri-plugin-process",
"tauri-plugin-shell",
"tauri-plugin-updater",
"tauri-plugin-window-state",
"tokio",
"url",
"users",
@ -6603,6 +6604,21 @@ dependencies = [
"zip",
]
[[package]]
name = "tauri-plugin-window-state"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd1cef203a15b4772898e7bc8e57c1f34696e39848987dfcd294d51ba0525650"
dependencies = [
"bitflags 2.6.0",
"log",
"serde",
"serde_json",
"tauri",
"tauri-plugin",
"thiserror",
]
[[package]]
name = "tauri-runtime"
version = "2.1.1"

View File

@ -67,6 +67,7 @@ users = "0.11.0"
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-global-shortcut = "2.0.0-rc"
tauri-plugin-updater = "2.0.0-rc"
tauri-plugin-window-state = "2.0.0-rc"
#openssl
[features]

View File

@ -6,6 +6,8 @@
"permissions": [
"global-shortcut:default",
"updater:default",
"deep-link:default"
"deep-link:default",
"window-state:default",
"window-state:default"
]
}

View File

@ -9,6 +9,7 @@ use crate::core::hotkey;
use crate::utils::{resolve, resolve::resolve_scheme, server};
#[cfg(target_os = "macos")]
use tauri::Listener;
use tauri_plugin_window_state::{AppHandleExt, StateFlags};
pub fn run() {
// 单例检测
@ -32,6 +33,7 @@ pub fn run() {
#[allow(unused_mut)]
let mut builder = tauri::Builder::default()
.plugin(tauri_plugin_window_state::Builder::new().build())
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_clipboard_manager::init())
.plugin(tauri_plugin_process::init())
@ -41,6 +43,7 @@ pub fn run() {
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_deep_link::init())
.plugin(tauri_plugin_window_state::Builder::default().build())
.setup(|app| {
#[cfg(target_os = "linux")]
{
@ -144,6 +147,8 @@ pub fn run() {
tauri::WindowEvent::CloseRequested { api, .. } => {
println!("closing window...");
api.prevent_close();
let app_hanele = core::handle::Handle::global().app_handle().unwrap();
let _ = app_hanele.save_window_state(StateFlags::default());
let window = core::handle::Handle::global().get_window().unwrap();
log_err!(window.hide());
}

View File

@ -8,6 +8,7 @@ use percent_encoding::percent_decode_str;
use serde_yaml::Mapping;
use std::net::TcpListener;
use tauri::{App, Manager};
use tauri_plugin_window_state::{StateFlags, WindowExt};
use url::Url;
//#[cfg(not(target_os = "linux"))]
@ -143,22 +144,26 @@ pub fn create_window() {
.transparent(true)
.inner_size(800.0, 636.0)
.visible(false)
.build();
.build().unwrap();
#[cfg(target_os = "macos")]
let _ = builder
let window = builder
.decorations(true)
.hidden_title(true)
.title_bar_style(tauri::TitleBarStyle::Overlay)
.inner_size(800.0, 642.0)
.build();
.build()
.unwrap();
#[cfg(target_os = "linux")]
let _ = builder
let window = builder
.decorations(false)
.transparent(true)
.inner_size(800.0, 642.0)
.build();
.build()
.unwrap();
let _ = window.restore_state(StateFlags::all());
}
pub async fn resolve_scheme(param: String) -> Result<()> {