mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 04:43:44 +08:00
feat: hide window on macos
This commit is contained in:
parent
ddd60aa1ff
commit
c07cbf9dbb
27
src-tauri/Cargo.lock
generated
27
src-tauri/Cargo.lock
generated
@ -495,6 +495,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"auto-launch",
|
"auto-launch",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
"ctrlc",
|
||||||
"deelevate",
|
"deelevate",
|
||||||
"delay_timer",
|
"delay_timer",
|
||||||
"dirs 4.0.0",
|
"dirs 4.0.0",
|
||||||
@ -757,6 +758,16 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ctrlc"
|
||||||
|
version = "3.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173"
|
||||||
|
dependencies = [
|
||||||
|
"nix",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cty"
|
name = "cty"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
@ -1946,9 +1957,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.126"
|
version = "0.2.132"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
|
checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
@ -2244,6 +2255,18 @@ version = "1.0.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"bitflags",
|
||||||
|
"cfg-if 1.0.0",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nodrop"
|
name = "nodrop"
|
||||||
version = "0.1.14"
|
version = "0.1.14"
|
||||||
|
@ -19,6 +19,7 @@ anyhow = "1.0"
|
|||||||
dirs = "4.0.0"
|
dirs = "4.0.0"
|
||||||
open = "2.1.1"
|
open = "2.1.1"
|
||||||
log = "0.4.14"
|
log = "0.4.14"
|
||||||
|
ctrlc = "3.2.3"
|
||||||
dunce = "1.0.2"
|
dunce = "1.0.2"
|
||||||
log4rs = "1.0.0"
|
log4rs = "1.0.0"
|
||||||
nanoid = "0.4.0"
|
nanoid = "0.4.0"
|
||||||
|
@ -14,6 +14,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
use tauri::{
|
use tauri::{
|
||||||
api, CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem,
|
api, CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem,
|
||||||
|
WindowEvent,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
@ -176,19 +177,41 @@ fn main() -> std::io::Result<()> {
|
|||||||
builder = builder.menu(Menu::new().add_submenu(submenu_file));
|
builder = builder.menu(Menu::new().add_submenu(submenu_file));
|
||||||
}
|
}
|
||||||
|
|
||||||
builder
|
let app = builder
|
||||||
.build(context)
|
.build(context)
|
||||||
.expect("error while running tauri application")
|
.expect("error while running tauri application");
|
||||||
.run(|app_handle, e| match e {
|
|
||||||
tauri::RunEvent::ExitRequested { api, .. } => {
|
let app_handle = app.app_handle();
|
||||||
api.prevent_exit();
|
ctrlc::set_handler(move || {
|
||||||
|
resolve::resolve_reset(&app_handle);
|
||||||
|
app_handle.exit(0);
|
||||||
|
})
|
||||||
|
.expect("error when exiting.");
|
||||||
|
|
||||||
|
app.run(|app_handle, e| match e {
|
||||||
|
tauri::RunEvent::ExitRequested { api, .. } => {
|
||||||
|
api.prevent_exit();
|
||||||
|
}
|
||||||
|
tauri::RunEvent::Exit => {
|
||||||
|
resolve::resolve_reset(app_handle);
|
||||||
|
api::process::kill_children();
|
||||||
|
}
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
tauri::RunEvent::WindowEvent { label, event, .. } => {
|
||||||
|
if label == "main" {
|
||||||
|
match event {
|
||||||
|
WindowEvent::CloseRequested { api, .. } => {
|
||||||
|
api.prevent_close();
|
||||||
|
app_handle.get_window("main").map(|win| {
|
||||||
|
let _ = win.hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tauri::RunEvent::Exit => {
|
}
|
||||||
resolve::resolve_reset(app_handle);
|
_ => {}
|
||||||
api::process::kill_children();
|
});
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
});
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,10 @@ const Layout = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.addEventListener("keydown", (e) => {
|
window.addEventListener("keydown", (e) => {
|
||||||
if (e.key === "Escape") appWindow.close();
|
if (e.key === "Escape") {
|
||||||
|
if (OS === "macos") appWindow.hide();
|
||||||
|
else appWindow.close();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
listen("verge://refresh-clash-config", async () => {
|
listen("verge://refresh-clash-config", async () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user