소스 검색

refactor: Optimizing the implementation of Linux URL Scheme registration

MystiPanda 1 년 전
부모
커밋
1ffc4f538b
4개의 변경된 파일12개의 추가작업 그리고 19개의 파일을 삭제
  1. 9 0
      src-tauri/clash-verge.desktop
  2. 0 6
      src-tauri/src/utils/desktop/clash-verge-scheme.desktop
  3. 1 12
      src-tauri/src/utils/init.rs
  4. 2 1
      src-tauri/tauri.linux.conf.json

+ 9 - 0
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;

+ 0 - 6
src-tauri/src/utils/desktop/clash-verge-scheme.desktop

@@ -1,6 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Clash Verge Scheme Handler
-Exec=clash-verge %u
-StartupNotify=false
-MimeType=x-scheme-handler/clash;

+ 1 - 12
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() {

+ 2 - 1
src-tauri/tauri.linux.conf.json

@@ -6,7 +6,8 @@
     "bundle": {
       "targets": ["deb", "appimage", "updater"],
       "deb": {
-        "depends": ["openssl"]
+        "depends": ["openssl"],
+        "desktopTemplate": "./clash-verge.desktop"
       }
     }
   }