diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 307e35d5..01a50452 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -52,8 +52,16 @@ impl Tray { )) .add_item(CustomMenuItem::new("tun_mode", t!("TUN Mode", "Tun 模式"))) .add_item(CustomMenuItem::new( - "copy_env", - t!("Copy Env", "复制环境变量"), + "copy_env_sh", + t!("Copy Env (sh)", "复制环境变量(sh)"), + )) + .add_item(CustomMenuItem::new( + "copy_env_cmd", + t!("Copy Env (CMD)", "复制环境变量(CMD)"), + )) + .add_item(CustomMenuItem::new( + "copy_env_ps", + t!("Copy Env (PS)", "复制环境变量(PS)"), )) .add_submenu(SystemTraySubmenu::new( t!("Open Dir", "打开目录"), @@ -149,7 +157,11 @@ impl Tray { "open_window" => resolve::create_window(app_handle), "system_proxy" => feat::toggle_system_proxy(), "tun_mode" => feat::toggle_tun_mode(), - "copy_env" => feat::copy_clash_env(), + "copy_env_sh" => feat::copy_clash_env("sh"), + #[cfg(target_os = "windows")] + "copy_env_cmd" => feat::copy_clash_env("cmd"), + #[cfg(target_os = "windows")] + "copy_env_ps" => feat::copy_clash_env("ps"), "open_app_dir" => crate::log_err!(cmds::open_app_dir()), "open_core_dir" => crate::log_err!(cmds::open_core_dir()), "open_logs_dir" => crate::log_err!(cmds::open_logs_dir()), diff --git a/src-tauri/src/feat.rs b/src-tauri/src/feat.rs index a446c279..2228826c 100644 --- a/src-tauri/src/feat.rs +++ b/src-tauri/src/feat.rs @@ -332,10 +332,19 @@ async fn update_core_config() -> Result<()> { } /// copy env variable -pub fn copy_clash_env() { +pub fn copy_clash_env(option: &str) { let port = { Config::clash().data().get_client_info().port }; - let text = format!("export https_proxy=http://127.0.0.1:{port} http_proxy=http://127.0.0.1:{port} all_proxy=socks5://127.0.0.1:{port}"); + + let sh = format!("export https_proxy=http://127.0.0.1:{port} http_proxy=http://127.0.0.1:{port} all_proxy=socks5://127.0.0.1:{port}"); + let cmd: String = format!("set http_proxy=http://127.0.0.1:{port} \n set https_proxy=http://127.0.0.1:{port}"); + let ps: String = format!("$env:HTTP_PROXY=\"http://127.0.0.1:{port}\"; $env:HTTPS_PROXY=\"http://127.0.0.1:{port}\""); let mut cliboard = Clipboard::new(); - cliboard.write_text(text); + + match option { + "sh" => cliboard.write_text(sh), + "cmd" => cliboard.write_text(cmd), + "ps" => cliboard.write_text(ps), + _ => log::error!(target: "app", "copy_clash_env: Invalid option! {option}"), + } }