mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 03:13:44 +08:00
feat: maoos tray speed can be closed
This commit is contained in:
parent
d0d5204cbc
commit
29ec4dc546
@ -1,7 +1,7 @@
|
|||||||
use crate::config::DEFAULT_PAC;
|
use crate::config::DEFAULT_PAC;
|
||||||
use crate::config::{deserialize_encrypted, serialize_encrypted};
|
use crate::config::{deserialize_encrypted, serialize_encrypted};
|
||||||
use crate::utils::{dirs, help};
|
|
||||||
use crate::utils::i18n;
|
use crate::utils::i18n;
|
||||||
|
use crate::utils::{dirs, help};
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use log::LevelFilter;
|
use log::LevelFilter;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -176,6 +176,8 @@ pub struct IVerge {
|
|||||||
default
|
default
|
||||||
)]
|
)]
|
||||||
pub webdav_password: Option<String>,
|
pub webdav_password: Option<String>,
|
||||||
|
|
||||||
|
pub enable_tray_speed: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Clone, Deserialize, Serialize)]
|
#[derive(Default, Debug, Clone, Deserialize, Serialize)]
|
||||||
@ -207,10 +209,10 @@ impl IVerge {
|
|||||||
let sys_lang = sys_locale::get_locale()
|
let sys_lang = sys_locale::get_locale()
|
||||||
.unwrap_or_else(|| String::from("en"))
|
.unwrap_or_else(|| String::from("en"))
|
||||||
.to_lowercase();
|
.to_lowercase();
|
||||||
|
|
||||||
let lang_code = sys_lang.split(['_', '-']).next().unwrap_or("en");
|
let lang_code = sys_lang.split(['_', '-']).next().unwrap_or("en");
|
||||||
let supported_languages = i18n::get_supported_languages();
|
let supported_languages = i18n::get_supported_languages();
|
||||||
|
|
||||||
if supported_languages.contains(&lang_code.to_string()) {
|
if supported_languages.contains(&lang_code.to_string()) {
|
||||||
lang_code.to_string()
|
lang_code.to_string()
|
||||||
} else {
|
} else {
|
||||||
@ -276,6 +278,7 @@ impl IVerge {
|
|||||||
webdav_url: None,
|
webdav_url: None,
|
||||||
webdav_username: None,
|
webdav_username: None,
|
||||||
webdav_password: None,
|
webdav_password: None,
|
||||||
|
enable_tray_speed: Some(true),
|
||||||
..Self::default()
|
..Self::default()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -355,6 +358,7 @@ impl IVerge {
|
|||||||
patch!(webdav_url);
|
patch!(webdav_url);
|
||||||
patch!(webdav_username);
|
patch!(webdav_username);
|
||||||
patch!(webdav_password);
|
patch!(webdav_password);
|
||||||
|
patch!(enable_tray_speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 在初始化前尝试拿到单例端口的值
|
/// 在初始化前尝试拿到单例端口的值
|
||||||
@ -441,6 +445,7 @@ pub struct IVergeResponse {
|
|||||||
pub webdav_url: Option<String>,
|
pub webdav_url: Option<String>,
|
||||||
pub webdav_username: Option<String>,
|
pub webdav_username: Option<String>,
|
||||||
pub webdav_password: Option<String>,
|
pub webdav_password: Option<String>,
|
||||||
|
pub enable_tray_speed: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<IVerge> for IVergeResponse {
|
impl From<IVerge> for IVergeResponse {
|
||||||
@ -501,6 +506,7 @@ impl From<IVerge> for IVergeResponse {
|
|||||||
webdav_url: verge.webdav_url,
|
webdav_url: verge.webdav_url,
|
||||||
webdav_username: verge.webdav_username,
|
webdav_username: verge.webdav_username,
|
||||||
webdav_password: verge.webdav_password,
|
webdav_password: verge.webdav_password,
|
||||||
|
enable_tray_speed: verge.enable_tray_speed,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -216,16 +216,22 @@ impl Tray {
|
|||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
{
|
{
|
||||||
|
let enable_tray_speed = Config::verge().latest().enable_tray_speed.unwrap_or(true);
|
||||||
let is_template =
|
let is_template =
|
||||||
crate::utils::help::is_monochrome_image_from_bytes(&icon_bytes).unwrap_or(false);
|
crate::utils::help::is_monochrome_image_from_bytes(&icon_bytes).unwrap_or(false);
|
||||||
// 如果rate为None,获取当前速率
|
|
||||||
let rate = rate.or_else(|| {
|
let icon_bytes = if enable_tray_speed {
|
||||||
self.speed_rate
|
let rate = rate.or_else(|| {
|
||||||
.lock()
|
self.speed_rate
|
||||||
.as_ref()
|
.lock()
|
||||||
.and_then(|speed_rate| speed_rate.get_curent_rate())
|
.as_ref()
|
||||||
});
|
.and_then(|speed_rate| speed_rate.get_curent_rate())
|
||||||
let icon_bytes = SpeedRate::add_speed_text(icon_bytes, rate)?;
|
});
|
||||||
|
SpeedRate::add_speed_text(icon_bytes, rate)?
|
||||||
|
} else {
|
||||||
|
icon_bytes
|
||||||
|
};
|
||||||
|
|
||||||
let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&icon_bytes)?));
|
let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&icon_bytes)?));
|
||||||
let _ = tray.set_icon_as_template(is_template);
|
let _ = tray.set_icon_as_template(is_template);
|
||||||
}
|
}
|
||||||
|
@ -194,6 +194,7 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> {
|
|||||||
let socks_port = patch.verge_socks_port;
|
let socks_port = patch.verge_socks_port;
|
||||||
let http_enabled = patch.verge_http_enabled;
|
let http_enabled = patch.verge_http_enabled;
|
||||||
let http_port = patch.verge_port;
|
let http_port = patch.verge_port;
|
||||||
|
let enable_tray_speed = patch.enable_tray_speed;
|
||||||
|
|
||||||
let res: std::result::Result<(), anyhow::Error> = {
|
let res: std::result::Result<(), anyhow::Error> = {
|
||||||
let mut should_restart_core = false;
|
let mut should_restart_core = false;
|
||||||
@ -260,6 +261,10 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> {
|
|||||||
should_update_systray_menu = true;
|
should_update_systray_menu = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if enable_tray_speed.is_some() {
|
||||||
|
should_update_systray_icon = true;
|
||||||
|
}
|
||||||
|
|
||||||
if should_restart_core {
|
if should_restart_core {
|
||||||
CoreManager::global().restart_core().await?;
|
CoreManager::global().restart_core().await?;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
styled,
|
styled,
|
||||||
ListItem,
|
ListItem,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
|
Box,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { useVerge } from "@/hooks/use-verge";
|
import { useVerge } from "@/hooks/use-verge";
|
||||||
import { BaseDialog, DialogRef, Notice, Switch } from "@/components/base";
|
import { BaseDialog, DialogRef, Notice, Switch } from "@/components/base";
|
||||||
@ -163,6 +164,21 @@ export const LayoutViewer = forwardRef<DialogRef>((props, ref) => {
|
|||||||
</GuardState>
|
</GuardState>
|
||||||
</Item>
|
</Item>
|
||||||
)}
|
)}
|
||||||
|
{OS === "macos" && (
|
||||||
|
<Item>
|
||||||
|
<ListItemText primary={t("Enable Tray Speed")} />
|
||||||
|
<GuardState
|
||||||
|
value={verge?.enable_tray_speed ?? true}
|
||||||
|
valueProps="checked"
|
||||||
|
onCatch={onError}
|
||||||
|
onFormat={onSwitchFormat}
|
||||||
|
onChange={(e) => onChangeData({ enable_tray_speed: e })}
|
||||||
|
onGuard={(e) => patchVerge({ enable_tray_speed: e })}
|
||||||
|
>
|
||||||
|
<Switch edge="end" />
|
||||||
|
</GuardState>
|
||||||
|
</Item>
|
||||||
|
)}
|
||||||
|
|
||||||
<Item>
|
<Item>
|
||||||
<ListItemText primary={t("Common Tray Icon")} />
|
<ListItemText primary={t("Common Tray Icon")} />
|
||||||
|
@ -433,5 +433,6 @@
|
|||||||
"Dashboard": "لوحة التحكم",
|
"Dashboard": "لوحة التحكم",
|
||||||
"Rule Mode": "وضع القواعد",
|
"Rule Mode": "وضع القواعد",
|
||||||
"Global Mode": "الوضع العالمي",
|
"Global Mode": "الوضع العالمي",
|
||||||
"Direct Mode": "الوضع المباشر"
|
"Direct Mode": "الوضع المباشر",
|
||||||
|
"Enable Tray Speed": "تفعيل سرعة التراي"
|
||||||
}
|
}
|
||||||
|
@ -436,5 +436,6 @@
|
|||||||
"Dashboard": "Dashboard",
|
"Dashboard": "Dashboard",
|
||||||
"Rule Mode": "Rule Mode",
|
"Rule Mode": "Rule Mode",
|
||||||
"Global Mode": "Global Mode",
|
"Global Mode": "Global Mode",
|
||||||
"Direct Mode": "Direct Mode"
|
"Direct Mode": "Direct Mode",
|
||||||
|
"Enable Tray Speed": "Enable Tray Speed"
|
||||||
}
|
}
|
||||||
|
@ -430,5 +430,6 @@
|
|||||||
"More": "بیشتر",
|
"More": "بیشتر",
|
||||||
"Rule Mode": "حالت قوانین",
|
"Rule Mode": "حالت قوانین",
|
||||||
"Global Mode": "حالت جهانی",
|
"Global Mode": "حالت جهانی",
|
||||||
"Direct Mode": "حالت مستقیم"
|
"Direct Mode": "حالت مستقیم",
|
||||||
|
"Enable Tray Speed": "فعال کردن سرعت ترای"
|
||||||
}
|
}
|
||||||
|
@ -429,5 +429,6 @@
|
|||||||
"Confirm to delete this backup file?": "Konfirmasi untuk menghapus file cadangan ini?",
|
"Confirm to delete this backup file?": "Konfirmasi untuk menghapus file cadangan ini?",
|
||||||
"Confirm to restore this backup file?": "Konfirmasi untuk memulihkan file cadangan ini?",
|
"Confirm to restore this backup file?": "Konfirmasi untuk memulihkan file cadangan ini?",
|
||||||
"Restore Success, App will restart in 1s": "Pemulihan Berhasil, Aplikasi akan dimulai ulang dalam 1 detik",
|
"Restore Success, App will restart in 1s": "Pemulihan Berhasil, Aplikasi akan dimulai ulang dalam 1 detik",
|
||||||
"Failed to fetch backup files": "Gagal mengambil file cadangan"
|
"Failed to fetch backup files": "Gagal mengambil file cadangan",
|
||||||
|
"Enable Tray Speed": "Aktifkan Tray Speed"
|
||||||
}
|
}
|
||||||
|
@ -430,5 +430,6 @@
|
|||||||
"More": "Ещё",
|
"More": "Ещё",
|
||||||
"Rule Mode": "Режим правил",
|
"Rule Mode": "Режим правил",
|
||||||
"Global Mode": "Глобальный режим",
|
"Global Mode": "Глобальный режим",
|
||||||
"Direct Mode": "Прямой режим"
|
"Direct Mode": "Прямой режим",
|
||||||
|
"Enable Tray Speed": "Включить скорость в лотке"
|
||||||
}
|
}
|
||||||
|
@ -429,5 +429,6 @@
|
|||||||
"More": "Башҡа",
|
"More": "Башҡа",
|
||||||
"Rule Mode": "Кагыйдә режимы",
|
"Rule Mode": "Кагыйдә режимы",
|
||||||
"Global Mode": "Глобаль режим",
|
"Global Mode": "Глобаль режим",
|
||||||
"Direct Mode": "Туры режим"
|
"Direct Mode": "Туры режим",
|
||||||
|
"Enable Tray Speed": "Трей скоростьне үстерү"
|
||||||
}
|
}
|
||||||
|
@ -430,5 +430,6 @@
|
|||||||
"More": "更多",
|
"More": "更多",
|
||||||
"Rule Mode": "规则模式",
|
"Rule Mode": "规则模式",
|
||||||
"Global Mode": "全局模式",
|
"Global Mode": "全局模式",
|
||||||
"Direct Mode": "直连模式"
|
"Direct Mode": "直连模式",
|
||||||
|
"Enable Tray Speed": "启用托盘速率"
|
||||||
}
|
}
|
||||||
|
1
src/services/types.d.ts
vendored
1
src/services/types.d.ts
vendored
@ -706,6 +706,7 @@ interface IVergeConfig {
|
|||||||
common_tray_icon?: boolean;
|
common_tray_icon?: boolean;
|
||||||
sysproxy_tray_icon?: boolean;
|
sysproxy_tray_icon?: boolean;
|
||||||
tun_tray_icon?: boolean;
|
tun_tray_icon?: boolean;
|
||||||
|
enable_tray_speed?: boolean;
|
||||||
enable_tun_mode?: boolean;
|
enable_tun_mode?: boolean;
|
||||||
enable_auto_launch?: boolean;
|
enable_auto_launch?: boolean;
|
||||||
enable_silent_start?: boolean;
|
enable_silent_start?: boolean;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user