From 1ffc4f538b5d4e637a602495c0c83e23782d290e Mon Sep 17 00:00:00 2001 From: MystiPanda Date: Wed, 10 Jan 2024 16:34:35 +0800 Subject: [PATCH] refactor: Optimizing the implementation of Linux URL Scheme registration --- src-tauri/clash-verge.desktop | 9 +++++++++ .../src/utils/desktop/clash-verge-scheme.desktop | 6 ------ src-tauri/src/utils/init.rs | 13 +------------ src-tauri/tauri.linux.conf.json | 3 ++- 4 files changed, 12 insertions(+), 19 deletions(-) create mode 100644 src-tauri/clash-verge.desktop delete mode 100644 src-tauri/src/utils/desktop/clash-verge-scheme.desktop diff --git a/src-tauri/clash-verge.desktop b/src-tauri/clash-verge.desktop new file mode 100644 index 00000000..33063741 --- /dev/null +++ b/src-tauri/clash-verge.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Categories={{{categories}}} +Comment={{{comment}}} +Exec={{{exec}}} %u +Icon={{{icon}}} +Name={{{name}}} +Terminal=false +Type=Application +MimeType=x-scheme-handler/clash; \ No newline at end of file diff --git a/src-tauri/src/utils/desktop/clash-verge-scheme.desktop b/src-tauri/src/utils/desktop/clash-verge-scheme.desktop deleted file mode 100644 index e2226e48..00000000 --- a/src-tauri/src/utils/desktop/clash-verge-scheme.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Clash Verge Scheme Handler -Exec=clash-verge %u -StartupNotify=false -MimeType=x-scheme-handler/clash; \ No newline at end of file diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index e5825fda..051ac90c 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -325,20 +325,9 @@ pub fn init_scheme() -> Result<()> { } #[cfg(target_os = "linux")] pub fn init_scheme() -> Result<()> { - use std::io::Write; - - let desktop_file_content = include_str!("./desktop/clash-verge-scheme.desktop"); - let desktop_dir = dirs::local_applications_dir()?; - if !desktop_dir.exists() { - let _ = std::fs::create_dir_all(&desktop_dir); - } - let mut desktop_file = - std::fs::File::create(dirs::local_applications_dir()?.join("clash-verge-scheme.desktop"))?; - desktop_file.write_all(desktop_file_content.as_bytes())?; - let output = std::process::Command::new("xdg-mime") .arg("default") - .arg("clash-verge-scheme.desktop") + .arg("clash-verge.desktop") .arg("x-scheme-handler/clash") .output()?; if !output.status.success() { diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index 9949323b..fc152ebc 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -6,7 +6,8 @@ "bundle": { "targets": ["deb", "appimage", "updater"], "deb": { - "depends": ["openssl"] + "depends": ["openssl"], + "desktopTemplate": "./clash-verge.desktop" } } }