diff --git a/src-tauri/icons/tray-icon-sun.ico b/src-tauri/icons/tray-icon-sun.ico deleted file mode 100644 index f9ed3420..00000000 Binary files a/src-tauri/icons/tray-icon-sun.ico and /dev/null differ diff --git a/src-tauri/icons/tray-icon-sys-sun.ico b/src-tauri/icons/tray-icon-sys-sun.ico deleted file mode 100644 index 46f7a1be..00000000 Binary files a/src-tauri/icons/tray-icon-sys-sun.ico and /dev/null differ diff --git a/src-tauri/icons/tray-icon-tun-sun.ico b/src-tauri/icons/tray-icon-tun-sun.ico deleted file mode 100644 index 70801439..00000000 Binary files a/src-tauri/icons/tray-icon-tun-sun.ico and /dev/null differ diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index af2c855f..d2675925 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -83,8 +83,6 @@ impl Tray { let verge = Config::verge().latest().clone(); let system_proxy = verge.enable_system_proxy.as_ref().unwrap_or(&false); let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); - #[cfg(target_os = "macos")] - let tray_icon = verge.tray_icon.clone().unwrap_or("monochrome".to_string()); let common_tray_icon = verge.common_tray_icon.as_ref().unwrap_or(&false); let sysproxy_tray_icon = verge.sysproxy_tray_icon.as_ref().unwrap_or(&false); let tun_tray_icon = verge.tun_tray_icon.as_ref().unwrap_or(&false); @@ -97,28 +95,10 @@ impl Tray { *tun_mode, )?)); - // let _ = tray. - #[cfg(target_os = "macos")] - match tray_icon.as_str() { - "monochrome" => { - let _ = tray.set_icon_as_template(true); - } - "colorful" => { - let _ = tray.set_icon_as_template(false); - } - _ => {} - } - + let mut use_custom_icon = false; + #[allow(unused)] let mut indication_icon = if *system_proxy { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-sys.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] let mut icon = include_bytes!("../../icons/tray-icon-sys.ico").to_vec(); - if *sysproxy_tray_icon { let icon_dir_path = dirs::app_home_dir()?.join("icons"); let png_path = icon_dir_path.join("sysproxy.png"); @@ -128,38 +108,10 @@ impl Tray { } else if png_path.exists() { icon = std::fs::read(png_path).unwrap(); } + use_custom_icon = true; } icon - } else { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] - let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); - if *common_tray_icon { - let icon_dir_path = dirs::app_home_dir()?.join("icons"); - let png_path = icon_dir_path.join("common.png"); - let ico_path = icon_dir_path.join("common.ico"); - if ico_path.exists() { - icon = std::fs::read(ico_path).unwrap(); - } else if png_path.exists() { - icon = std::fs::read(png_path).unwrap(); - } - } - icon - }; - - if *tun_mode { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-tun.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] + } else if *tun_mode { let mut icon = include_bytes!("../../icons/tray-icon-tun.ico").to_vec(); if *tun_tray_icon { let icon_dir_path = dirs::app_home_dir()?.join("icons"); @@ -170,9 +122,34 @@ impl Tray { } else if png_path.exists() { icon = std::fs::read(png_path).unwrap(); } + use_custom_icon = true; + } + icon + } else { + let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); + if *common_tray_icon { + let icon_dir_path = dirs::app_home_dir()?.join("icons"); + let png_path = icon_dir_path.join("common.png"); + let ico_path = icon_dir_path.join("common.ico"); + if ico_path.exists() { + icon = std::fs::read(ico_path).unwrap(); + } else if png_path.exists() { + icon = std::fs::read(png_path).unwrap(); + } + use_custom_icon = true; + } + icon + }; + + #[cfg(target_os = "macos")] + { + if use_custom_icon { + let _ = tray.set_icon_as_template(false); + let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&indication_icon)?)); } - indication_icon = icon } + + #[cfg(not(target_os = "macos"))] let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&indication_icon)?)); let switch_map = {