diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index 7f0fc4ed..39f7e38e 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -57,13 +57,6 @@ pub fn copy_clash_env() { let http_proxy = format!("http://{clash_verge_rev_ip}:{}", port); let socks5_proxy = format!("socks5://{clash_verge_rev_ip}:{}", port); - let sh = - format!("export https_proxy={http_proxy} http_proxy={http_proxy} all_proxy={socks5_proxy}"); - let cmd: String = format!("set http_proxy={http_proxy}\r\nset https_proxy={http_proxy}"); - let ps: String = format!("$env:HTTP_PROXY=\"{http_proxy}\"; $env:HTTPS_PROXY=\"{http_proxy}\""); - let nu: String = - format!("load-env {{ http_proxy: \"{http_proxy}\", https_proxy: \"{http_proxy}\" }}"); - let cliboard = app_handle.clipboard(); let env_type = { Config::verge().latest().env_type.clone() }; let env_type = match env_type { @@ -77,11 +70,20 @@ pub fn copy_clash_env() { default.to_string() } }; - match env_type.as_str() { - "bash" => cliboard.write_text(sh).unwrap_or_default(), - "cmd" => cliboard.write_text(cmd).unwrap_or_default(), - "powershell" => cliboard.write_text(ps).unwrap_or_default(), - "nushell" => cliboard.write_text(nu).unwrap_or_default(), - _ => log::error!(target: "app", "copy_clash_env: Invalid env type! {env_type}"), + + let export_text = match env_type.as_str() { + "bash" => format!("export https_proxy={http_proxy} http_proxy={http_proxy} all_proxy={socks5_proxy}"), + "cmd" => format!("set http_proxy={http_proxy}\r\nset https_proxy={http_proxy}"), + "powershell" => format!("$env:HTTP_PROXY=\"{http_proxy}\"; $env:HTTPS_PROXY=\"{http_proxy}\""), + "nushell" => format!("load-env {{ http_proxy: \"{http_proxy}\", https_proxy: \"{http_proxy}\" }}"), + "fish" => format!("set -x http_proxy {http_proxy}; set -x https_proxy {http_proxy}"), + _ => { + log::error!(target: "app", "copy_clash_env: Invalid env type! {env_type}"); + return; + } }; + + if let Err(_) = cliboard.write_text(export_text) { + log::error!(target: "app", "Failed to write to clipboard"); + } } diff --git a/src/components/setting/setting-verge-basic.tsx b/src/components/setting/setting-verge-basic.tsx index 5c8d1132..4e562bf0 100644 --- a/src/components/setting/setting-verge-basic.tsx +++ b/src/components/setting/setting-verge-basic.tsx @@ -142,8 +142,9 @@ const SettingVergeBasic = ({ onError }: Props) => { > diff --git a/src/services/types.d.ts b/src/services/types.d.ts index 7bceae5a..83ba144e 100644 --- a/src/services/types.d.ts +++ b/src/services/types.d.ts @@ -694,7 +694,7 @@ interface IVergeConfig { app_log_level?: "trace" | "debug" | "info" | "warn" | "error" | string; language?: string; tray_event?: "main_window" | "system_proxy" | "tun_mode" | string; - env_type?: "bash" | "cmd" | "powershell" | string; + env_type?: "bash" | "cmd" | "powershell" | "fish" | string; startup_script?: string; start_page?: string; clash_core?: string;