diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index 16422a90..3d18157f 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -25,6 +25,8 @@ pub struct IVerge { /// copy env type pub env_type: Option, + /// start page + pub start_page: Option, /// startup script path pub startup_script: Option, @@ -153,6 +155,7 @@ impl IVerge { env_type: Some("bash".into()), #[cfg(target_os = "windows")] env_type: Some("powershell".into()), + start_page: Some("/".into()), traffic_graph: Some(true), enable_memory_usage: Some(true), enable_auto_launch: Some(false), @@ -192,6 +195,7 @@ impl IVerge { patch!(theme_mode); patch!(tray_event); patch!(env_type); + patch!(start_page); patch!(startup_script); patch!(traffic_graph); patch!(enable_memory_usage); diff --git a/src/components/setting/setting-verge.tsx b/src/components/setting/setting-verge.tsx index 165ba2a7..5d2d4e9f 100644 --- a/src/components/setting/setting-verge.tsx +++ b/src/components/setting/setting-verge.tsx @@ -27,7 +27,7 @@ import { LayoutViewer } from "./mods/layout-viewer"; import { UpdateViewer } from "./mods/update-viewer"; import getSystem from "@/utils/get-system"; import { portableFlag } from "@/pages/_layout"; - +import { routers } from "@/pages/_routers"; interface Props { onError?: (err: Error) => void; } @@ -38,8 +38,14 @@ const SettingVerge = ({ onError }: Props) => { const { t } = useTranslation(); const { verge, patchVerge, mutateVerge } = useVerge(); - const { theme_mode, language, tray_event, env_type, startup_script } = - verge ?? {}; + const { + theme_mode, + language, + tray_event, + env_type, + startup_script, + start_page, + } = verge ?? {}; const configRef = useRef(null); const hotkeyRef = useRef(null); const miscRef = useRef(null); @@ -134,6 +140,23 @@ const SettingVerge = ({ onError }: Props) => { + + + e.target.value} + onChange={(e) => onChangeData({ start_page: e })} + onGuard={(e) => patchVerge({ start_page: e })} + > + + + + { const { theme } = useCustomTheme(); const { verge } = useVerge(); - const { language } = verge || {}; - + const { language, start_page } = verge || {}; + const navigate = useNavigate(); const location = useLocation(); useEffect(() => { @@ -88,7 +88,10 @@ const Layout = () => { dayjs.locale(language === "zh" ? "zh-cn" : language); i18next.changeLanguage(language); } - }, [language]); + if (start_page) { + navigate(start_page); + } + }, [language, start_page]); return ( diff --git a/src/services/types.d.ts b/src/services/types.d.ts index 70a57fa6..c437cb1a 100644 --- a/src/services/types.d.ts +++ b/src/services/types.d.ts @@ -184,6 +184,7 @@ interface IVergeConfig { tray_event?: "main_window" | "system_proxy" | "tun_mode" | string; env_type?: "bash" | "cmd" | "powershell" | string; startup_script?: string; + start_page?: string; clash_core?: string; theme_mode?: "light" | "dark" | "system"; traffic_graph?: boolean;