From f142db3d49944aae8139c31dbc93041966476298 Mon Sep 17 00:00:00 2001 From: Pylogmon Date: Sun, 26 Nov 2023 18:35:21 +0800 Subject: [PATCH 1/5] feat: Config Tray Click Event --- src-tauri/src/config/verge.rs | 4 ++++ src-tauri/src/core/tray.rs | 17 ++++++++++++----- src/components/setting/setting-verge.tsx | 21 +++++++++++++++++++-- src/locales/en.json | 2 ++ src/locales/ru.json | 2 ++ src/locales/zh.json | 2 ++ src/services/types.d.ts | 1 + 7 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index 961280ea..f0c19699 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -23,6 +23,9 @@ pub struct IVerge { /// maybe be able to set the alpha pub theme_blur: Option, + /// tray click event + pub tray_event: Option, + /// enable traffic graph default is true pub traffic_graph: Option, @@ -166,6 +169,7 @@ impl IVerge { patch!(language); patch!(theme_mode); patch!(theme_blur); + patch!(tray_event); patch!(traffic_graph); patch!(enable_memory_usage); diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 01a50452..da0d8906 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -145,9 +145,20 @@ impl Tray { Ok(()) } - + pub fn on_left_click(app_handle: &AppHandle) { + let tray_event = { Config::verge().latest().tray_event.clone() }; + let tray_event = tray_event.unwrap_or("main_window".into()); + println!("{tray_event}"); + match tray_event.as_str() { + "system_proxy" => feat::toggle_system_proxy(), + "tun_mode" => feat::toggle_tun_mode(), + _ => resolve::create_window(app_handle), + } + } pub fn on_system_tray_event(app_handle: &AppHandle, event: SystemTrayEvent) { match event { + #[cfg(not(target_os = "linux"))] + SystemTrayEvent::LeftClick { .. } => Tray::on_left_click(app_handle), SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() { mode @ ("rule_mode" | "global_mode" | "direct_mode" | "script_mode") => { let mode = &mode[0..mode.len() - 5]; @@ -177,10 +188,6 @@ impl Tray { } _ => {} }, - #[cfg(target_os = "windows")] - SystemTrayEvent::LeftClick { .. } => { - resolve::create_window(app_handle); - } _ => {} } } diff --git a/src/components/setting/setting-verge.tsx b/src/components/setting/setting-verge.tsx index d54094d4..b0507f3c 100644 --- a/src/components/setting/setting-verge.tsx +++ b/src/components/setting/setting-verge.tsx @@ -29,8 +29,7 @@ const SettingVerge = ({ onError }: Props) => { const { t } = useTranslation(); const { verge, patchVerge, mutateVerge } = useVerge(); - const { theme_mode, language } = verge ?? {}; - + const { theme_mode, language, tray_event } = verge ?? {}; const configRef = useRef(null); const hotkeyRef = useRef(null); const miscRef = useRef(null); @@ -91,6 +90,24 @@ const SettingVerge = ({ onError }: Props) => { + {OS !== "linux" && ( + + e.target.value} + onChange={(e) => onChangeData({ tray_event: e })} + onGuard={(e) => patchVerge({ tray_event: e })} + > + + + + )} + Date: Sun, 26 Nov 2023 18:49:48 +0800 Subject: [PATCH 2/5] chore: Remove Debug Info --- src-tauri/src/core/tray.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index da0d8906..3921f51b 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -145,16 +145,17 @@ impl Tray { Ok(()) } + pub fn on_left_click(app_handle: &AppHandle) { let tray_event = { Config::verge().latest().tray_event.clone() }; let tray_event = tray_event.unwrap_or("main_window".into()); - println!("{tray_event}"); match tray_event.as_str() { "system_proxy" => feat::toggle_system_proxy(), "tun_mode" => feat::toggle_tun_mode(), _ => resolve::create_window(app_handle), } } + pub fn on_system_tray_event(app_handle: &AppHandle, event: SystemTrayEvent) { match event { #[cfg(not(target_os = "linux"))] From f18d0ab9230a4fa45a33536fb39cc5a3394c14c0 Mon Sep 17 00:00:00 2001 From: Pylogmon Date: Mon, 27 Nov 2023 19:55:42 +0800 Subject: [PATCH 3/5] fix: Tray Icon Tooltip is Empty --- src-tauri/src/core/tray.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 01a50452..2b1274d1 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -143,6 +143,14 @@ impl Tray { let _ = tray.get_item("system_proxy").set_selected(*system_proxy); let _ = tray.get_item("tun_mode").set_selected(*tun_mode); + #[cfg(not(target_os = "linux"))] + let _ = tray.set_tooltip(&format!( + "Clash Verge {}\nSystem Proxy: {}\nTun Mode: {}", + app_handle.package_info().version, + system_proxy, + tun_mode + )); + Ok(()) } From 64a9079ce46ecdc37ee5f156de62e9b53e42cba6 Mon Sep 17 00:00:00 2001 From: Pylogmon Date: Mon, 27 Nov 2023 20:04:47 +0800 Subject: [PATCH 4/5] chore: Add Translation --- src-tauri/src/core/tray.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 2b1274d1..c8294dc3 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -107,6 +107,20 @@ impl Tray { } pub fn update_part(app_handle: &AppHandle) -> Result<()> { + let zh = { Config::verge().latest().language == Some("zh".into()) }; + + let version = app_handle.package_info().version.to_string(); + + macro_rules! t { + ($en: expr, $zh: expr) => { + if zh { + $zh + } else { + $en + } + }; + } + let mode = { Config::clash() .latest() @@ -145,10 +159,9 @@ impl Tray { #[cfg(not(target_os = "linux"))] let _ = tray.set_tooltip(&format!( - "Clash Verge {}\nSystem Proxy: {}\nTun Mode: {}", - app_handle.package_info().version, - system_proxy, - tun_mode + "Clash Verge {version}\n{}: {system_proxy}\n{}: {tun_mode}", + t!("System Proxy", "系统代理"), + t!("TUN Mode", "Tun 模式") )); Ok(()) From 92e712a508b865332dc67223201f456833819147 Mon Sep 17 00:00:00 2001 From: Pylogmon Date: Mon, 27 Nov 2023 20:10:31 +0800 Subject: [PATCH 5/5] chore: fix style --- src-tauri/src/core/tray.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index c8294dc3..2c756404 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -157,11 +157,20 @@ impl Tray { let _ = tray.get_item("system_proxy").set_selected(*system_proxy); let _ = tray.get_item("tun_mode").set_selected(*tun_mode); + let switch_map = { + let mut map = std::collections::HashMap::new(); + map.insert(true, "on"); + map.insert(false, "off"); + map + }; + #[cfg(not(target_os = "linux"))] let _ = tray.set_tooltip(&format!( - "Clash Verge {version}\n{}: {system_proxy}\n{}: {tun_mode}", + "Clash Verge {version}\n{}: {}\n{}: {}", t!("System Proxy", "系统代理"), - t!("TUN Mode", "Tun 模式") + switch_map[system_proxy], + t!("TUN Mode", "Tun 模式"), + switch_map[tun_mode] )); Ok(())