From 08d84ca098b975acc79588e930fa73fed100a831 Mon Sep 17 00:00:00 2001 From: hlhr202 Date: Sun, 7 Apr 2024 21:28:49 +0800 Subject: [PATCH] update: windows hide window --- Cargo.lock | 88 +++++++++++++++++-- crates/openconnect-gui/src-tauri/Cargo.toml | 2 +- .../openconnect-gui/src-tauri/tauri.conf.json | 3 + crates/openconnect-gui/src/App.tsx | 5 ++ crates/openconnect-gui/src/Titlebar.tsx | 11 ++- 5 files changed, 98 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 31f4b4a..bcc3cd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -135,6 +135,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + [[package]] name = "base64ct" version = "1.6.0" @@ -2597,7 +2603,7 @@ dependencies = [ "machine-uid", "openconnect-sys", "rand 0.8.5", - "reqwest 0.12.2", + "reqwest 0.12.3", "security-framework", "serde", "serde_json", @@ -2623,7 +2629,7 @@ dependencies = [ "open 5.1.2", "openconnect-core", "openidconnect", - "reqwest 0.12.2", + "reqwest 0.12.3", "serde", "serde_json", "sudo", @@ -2732,6 +2738,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "os_info" +version = "3.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + [[package]] name = "overload" version = "0.1.1" @@ -3369,7 +3386,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", @@ -3388,11 +3405,11 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338" +checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" dependencies = [ - "base64 0.21.7", + "base64 0.22.0", "bytes", "cookie", "cookie_store", @@ -3416,7 +3433,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 2.1.1", "serde", "serde_json", "serde_urlencoded", @@ -3429,7 +3446,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.50.0", + "winreg 0.52.0", ] [[package]] @@ -3532,6 +3549,22 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" +dependencies = [ + "base64 0.21.7", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -4054,6 +4087,19 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sys-locale" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a11bd9c338fdba09f7881ab41551932ad42e405f61d01e8406baea71c07aee" +dependencies = [ + "js-sys", + "libc", + "wasm-bindgen", + "web-sys", + "windows-sys 0.45.0", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -4223,6 +4269,7 @@ dependencies = [ "objc", "once_cell", "open 3.2.0", + "os_info", "percent-encoding", "png", "rand 0.8.5", @@ -4234,6 +4281,7 @@ dependencies = [ "serde_repr", "serialize-to-javascript", "state", + "sys-locale", "tar", "tauri-macros", "tauri-runtime", @@ -5221,6 +5269,15 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -5239,6 +5296,21 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" diff --git a/crates/openconnect-gui/src-tauri/Cargo.toml b/crates/openconnect-gui/src-tauri/Cargo.toml index 69ef3f7..77e841b 100644 --- a/crates/openconnect-gui/src-tauri/Cargo.toml +++ b/crates/openconnect-gui/src-tauri/Cargo.toml @@ -12,7 +12,7 @@ tauri-build = { version = "1.5.1", features = [] } [dependencies] anyhow = { workspace = true } -tauri = { version = "1.6.1", features = [ "global-shortcut-all", "app-all", "window-all", "system-tray", +tauri = { version = "1.6.1", features = [ "os-all", "global-shortcut-all", "app-all", "window-all", "system-tray", "macos-private-api", "shell-open", "icon-png" diff --git a/crates/openconnect-gui/src-tauri/tauri.conf.json b/crates/openconnect-gui/src-tauri/tauri.conf.json index f0474be..96e88f2 100644 --- a/crates/openconnect-gui/src-tauri/tauri.conf.json +++ b/crates/openconnect-gui/src-tauri/tauri.conf.json @@ -19,6 +19,9 @@ "globalShortcut": { "all": true }, + "os": { + "all": true + }, "fs": { "scope": ["$RESOURCE/*"] }, diff --git a/crates/openconnect-gui/src/App.tsx b/crates/openconnect-gui/src/App.tsx index a433360..48674d8 100644 --- a/crates/openconnect-gui/src/App.tsx +++ b/crates/openconnect-gui/src/App.tsx @@ -106,6 +106,11 @@ function App() { hide(); }); + unregister("Alt+F4"); + register("Alt+F4", () => { + hide(); + }); + setMounted(true); }, []); diff --git a/crates/openconnect-gui/src/Titlebar.tsx b/crates/openconnect-gui/src/Titlebar.tsx index 15061f4..31f4c6a 100644 --- a/crates/openconnect-gui/src/Titlebar.tsx +++ b/crates/openconnect-gui/src/Titlebar.tsx @@ -1,6 +1,7 @@ import { FC, PropsWithChildren } from "react"; import { appWindow } from "@tauri-apps/api/window"; import { hide } from "@tauri-apps/api/app"; +import { type } from "@tauri-apps/api/os"; const TitleBarButton: FC< PropsWithChildren<{ id: string; className?: string; onClick?: () => void }> @@ -26,8 +27,14 @@ export const TauriTitleBar = () => { else appWindow.maximize(); }; - const handleHide = () => { - hide(); + const handleHide = async () => { + const osType = await type(); + if (osType === "Darwin") { + hide(); + } + if (osType === "Windows_NT") { + appWindow.hide(); + } }; return (