diff --git a/src-tauri/locales/ar.yml b/src-tauri/locales/ar.yml index 330cf3b50..a054627f7 100644 --- a/src-tauri/locales/ar.yml +++ b/src-tauri/locales/ar.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Rule + direct: Direct + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/de.yml b/src-tauri/locales/de.yml index 330cf3b50..2cda8afe8 100644 --- a/src-tauri/locales/de.yml +++ b/src-tauri/locales/de.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Regel + direct: Direkt + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/en.yml b/src-tauri/locales/en.yml index 330cf3b50..a054627f7 100644 --- a/src-tauri/locales/en.yml +++ b/src-tauri/locales/en.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Rule + direct: Direct + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/es.yml b/src-tauri/locales/es.yml index 330cf3b50..974899b15 100644 --- a/src-tauri/locales/es.yml +++ b/src-tauri/locales/es.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Regla + direct: Directo + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/fa.yml b/src-tauri/locales/fa.yml index 330cf3b50..a054627f7 100644 --- a/src-tauri/locales/fa.yml +++ b/src-tauri/locales/fa.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Rule + direct: Direct + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/id.yml b/src-tauri/locales/id.yml index 330cf3b50..587534e9c 100644 --- a/src-tauri/locales/id.yml +++ b/src-tauri/locales/id.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Aturan + direct: Langsung + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/jp.yml b/src-tauri/locales/jp.yml index 330cf3b50..4ed031a4a 100644 --- a/src-tauri/locales/jp.yml +++ b/src-tauri/locales/jp.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: ルール + direct: ダイレクト + global: グローバル profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/ko.yml b/src-tauri/locales/ko.yml index b671b8aec..51dccf885 100644 --- a/src-tauri/locales/ko.yml +++ b/src-tauri/locales/ko.yml @@ -28,6 +28,10 @@ tray: ruleMode: 규칙 모드 globalMode: 전역 모드 directMode: 직접 모드 + outboundModes: Outbound Modes + rule: 규칙 + direct: 직접 + global: 글로벌 profiles: 프로필 proxies: 프록시 systemProxy: 시스템 프록시 diff --git a/src-tauri/locales/ru.yml b/src-tauri/locales/ru.yml index 330cf3b50..cff8fe27c 100644 --- a/src-tauri/locales/ru.yml +++ b/src-tauri/locales/ru.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Правило + direct: Прямой + global: Глобальный profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/tr.yml b/src-tauri/locales/tr.yml index 330cf3b50..f6ffb6895 100644 --- a/src-tauri/locales/tr.yml +++ b/src-tauri/locales/tr.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Kural + direct: Doğrudan + global: Küresel profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/tt.yml b/src-tauri/locales/tt.yml index 330cf3b50..a054627f7 100644 --- a/src-tauri/locales/tt.yml +++ b/src-tauri/locales/tt.yml @@ -28,6 +28,10 @@ tray: ruleMode: Rule Mode globalMode: Global Mode directMode: Direct Mode + outboundModes: Outbound Modes + rule: Rule + direct: Direct + global: Global profiles: Profiles proxies: Proxies systemProxy: System Proxy diff --git a/src-tauri/locales/zh.yml b/src-tauri/locales/zh.yml index 10c2e6362..6b137faeb 100644 --- a/src-tauri/locales/zh.yml +++ b/src-tauri/locales/zh.yml @@ -28,6 +28,10 @@ tray: ruleMode: 规则模式 globalMode: 全局模式 directMode: 直连模式 + outboundModes: 出站模式 + rule: 规则 + direct: 直连 + global: 全局 profiles: 订阅 proxies: 代理 systemProxy: 系统代理 diff --git a/src-tauri/locales/zhtw.yml b/src-tauri/locales/zhtw.yml index 8e2b0845b..9e07ca714 100644 --- a/src-tauri/locales/zhtw.yml +++ b/src-tauri/locales/zhtw.yml @@ -28,6 +28,10 @@ tray: ruleMode: 規則模式 globalMode: 全域模式 directMode: 直連模式 + outboundModes: 出站模式 + rule: 規則 + direct: 直連 + global: 全域 profiles: 訂閱 proxies: 代理 systemProxy: 系統代理 diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index 9a25cf34c..70ad8964d 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -439,7 +439,7 @@ impl IVerge { webdav_password: None, enable_tray_speed: Some(false), // enable_tray_icon: Some(true), - tray_inline_proxy_groups: Some(false), + tray_inline_proxy_groups: Some(true), enable_global_hotkey: Some(true), enable_auto_light_weight_mode: Some(false), auto_light_weight_minutes: Some(10), diff --git a/src-tauri/src/core/tray/menu_def.rs b/src-tauri/src/core/tray/menu_def.rs index 78c76e6cb..24a488fdc 100644 --- a/src-tauri/src/core/tray/menu_def.rs +++ b/src-tauri/src/core/tray/menu_def.rs @@ -36,6 +36,7 @@ define_menu! { rule_mode => RULE_MODE, "tray_rule_mode", "tray.ruleMode", global_mode => GLOBAL_MODE, "tray_global_mode", "tray.globalMode", direct_mode => DIRECT_MODE, "tray_direct_mode", "tray.directMode", + outbound_modes => OUTBOUND_MODES, "tray_outbound_modes", "tray.outboundModes", profiles => PROFILES, "tray_profiles", "tray.profiles", proxies => PROXIES, "tray_proxies", "tray.proxies", system_proxy => SYSTEM_PROXY, "tray_system_proxy", "tray.systemProxy", diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 17ecd04f9..ce29aecc0 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -870,7 +870,7 @@ async fn create_tray_menu( }); let verge_settings = Config::verge().await.latest_arc(); - let show_proxy_groups_inline = verge_settings.tray_inline_proxy_groups.unwrap_or(false); + let show_proxy_groups_inline = verge_settings.tray_inline_proxy_groups.unwrap_or(true); let version = env!("CARGO_PKG_VERSION"); @@ -895,6 +895,13 @@ async fn create_tray_menu( hotkeys.get("open_or_close_dashboard").map(|s| s.as_str()), )?; + let current_mode_text = match current_proxy_mode { + "global" => rust_i18n::t!("tray.global"), + "direct" => rust_i18n::t!("tray.direct"), + _ => rust_i18n::t!("tray.rule"), + }; + let outbound_modes_label = format!("{} ({})", texts.outbound_modes, current_mode_text); + let rule_mode = &CheckMenuItem::with_id( app_handle, MenuIds::RULE_MODE, @@ -922,6 +929,18 @@ async fn create_tray_menu( hotkeys.get("clash_mode_direct").map(|s| s.as_str()), )?; + let outbound_modes = &Submenu::with_id_and_items( + app_handle, + MenuIds::OUTBOUND_MODES, + outbound_modes_label.as_str(), + true, + &[ + rule_mode as &dyn IsMenuItem, + global_mode as &dyn IsMenuItem, + direct_mode as &dyn IsMenuItem, + ], + )?; + let profiles = &Submenu::with_id_and_items( app_handle, MenuIds::PROFILES, @@ -1072,6 +1091,7 @@ async fn create_tray_menu( &texts.more, true, &[ + copy_env as &dyn IsMenuItem, close_all_connections, restart_clash, restart_app, @@ -1090,15 +1110,8 @@ async fn create_tray_menu( let separator = &PredefinedMenuItem::separator(app_handle)?; // 动态构建菜单项 - let mut menu_items: Vec<&dyn IsMenuItem> = vec![ - open_window, - separator, - rule_mode, - global_mode, - direct_mode, - separator, - profiles, - ]; + let mut menu_items: Vec<&dyn IsMenuItem> = + vec![open_window, outbound_modes, separator, profiles]; // 如果有代理节点,添加代理节点菜单 if show_proxy_groups_inline { @@ -1115,7 +1128,6 @@ async fn create_tray_menu( tun_mode as &dyn IsMenuItem, separator, lightweight_mode as &dyn IsMenuItem, - copy_env as &dyn IsMenuItem, open_dir as &dyn IsMenuItem, more as &dyn IsMenuItem, separator, diff --git a/src/components/setting/mods/layout-viewer.tsx b/src/components/setting/mods/layout-viewer.tsx index 3f367a3fa..ebc9588df 100644 --- a/src/components/setting/mods/layout-viewer.tsx +++ b/src/components/setting/mods/layout-viewer.tsx @@ -372,7 +372,7 @@ export const LayoutViewer = forwardRef((_, ref) => { )} />