diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index 10aa7c91de991a2062bb7bb93a3fe79b12dc45bc..d6b959dafd4d0aaef48e4d2b5ae61d3c2e8690c0 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -1,24 +1,10 @@ use super::{init, server}; use crate::{core::Profiles, states}; use tauri::{App, AppHandle, Manager}; -use tauri_plugin_shadows::Shadows; /// handle something when start app pub fn resolve_setup(app: &App) { - // set shadow when window decorations - let window = app.get_window("main").unwrap(); - window.set_shadow(true); - - // enable system blur - use tauri_plugin_vibrancy::Vibrancy; - #[cfg(target_os = "windows")] - window.apply_blur(); - #[cfg(target_os = "macos")] - { - use tauri_plugin_vibrancy::MacOSVibrancy; - #[allow(deprecated)] - window.apply_vibrancy(MacOSVibrancy::AppearanceBased); - } + resolve_window(app); // setup a simple http server for singleton server::embed_server(&app.handle()); @@ -58,3 +44,34 @@ pub fn resolve_reset(app_handle: &AppHandle) { verge.reset_sysproxy(); } + +/// customize the window theme +fn resolve_window(app: &App) { + let window = app.get_window("main").unwrap(); + + #[cfg(target_os = "windows")] + { + use tauri_plugin_shadows::Shadows; + use tauri_plugin_vibrancy::Vibrancy; + + window.set_decorations(false).unwrap(); + window.set_shadow(true); + window.apply_blur(); + } + + #[cfg(target_os = "macos")] + { + use tauri::LogicalSize; + use tauri::Size::Logical; + window.set_decorations(true).unwrap(); + window + .set_size(Logical(LogicalSize { + width: 800.0, + height: 610.0, + })) + .unwrap(); + // use tauri_plugin_vibrancy::MacOSVibrancy; + // #[allow(deprecated)] + // window.apply_vibrancy(MacOSVibrancy::AppearanceBased); + } +} diff --git a/src/assets/styles/layout.scss b/src/assets/styles/layout.scss index 6b20b9fd18e9e88fe093cb6b7090d935b08a2a2e..e75887f955f7b108ea6cd742c92c7701d4064e32 100644 --- a/src/assets/styles/layout.scss +++ b/src/assets/styles/layout.scss @@ -20,8 +20,8 @@ position: relative; flex: 0 1 180px; width: 100%; - max-width: 180px; - max-height: 180px; + max-width: 168px; + max-height: 168px; margin: 0 auto; padding: 0 8px; text-align: center; @@ -79,3 +79,9 @@ } } } + +.macos.layout { + .layout__right .the-content { + top: 0; + } +} diff --git a/src/components/layout/layout-traffic.tsx b/src/components/layout/layout-traffic.tsx index e7a7efb74c3db2826337bae45645015446bed220..c1d1c493de6eaaf8106bfcd9f9d510bb2ae042ff 100644 --- a/src/components/layout/layout-traffic.tsx +++ b/src/components/layout/layout-traffic.tsx @@ -54,7 +54,7 @@ const LayoutTraffic = () => { }; return ( - <Box data-windrag width="110px" position="relative" onClick={toggleStyle}> + <Box width="110px" position="relative" onClick={toggleStyle}> {trafficGraph && ( <canvas ref={canvasRef} diff --git a/src/components/setting/setting-verge.tsx b/src/components/setting/setting-verge.tsx index d71d55b365f4eec92b5388d8b6db721c962ade08..8a5470fe62039c4920a37bf95f494ef96c462785 100644 --- a/src/components/setting/setting-verge.tsx +++ b/src/components/setting/setting-verge.tsx @@ -39,8 +39,8 @@ const SettingVerge = ({ onError }: Props) => { onCatch={onError} onFormat={onSwitchFormat} onChange={(e) => onChangeData({ theme_mode: e ? "dark" : "light" })} - onGuard={(c) => - patchVergeConfig({ theme_mode: c ? "dark" : "light" }) + onGuard={(e) => + patchVergeConfig({ theme_mode: e ? "dark" : "light" }) } > <PaletteSwitch edge="end" /> diff --git a/src/pages/_layout.tsx b/src/pages/_layout.tsx index 777ab54083bbb29a47fa76fae5c9294d8f81127d..e54b4f4b8cb99758840340441115fd9641b7e22d 100644 --- a/src/pages/_layout.tsx +++ b/src/pages/_layout.tsx @@ -13,6 +13,8 @@ import LayoutControl from "../components/layout/layout-control"; import LayoutTraffic from "../components/layout/layout-traffic"; import UpdateButton from "../components/layout/update-button"; +const isMacos = navigator.userAgent.includes("Mac OS X"); + const Layout = () => { const { mutate } = useSWRConfig(); const { data } = useSWR("getVergeConfig", getVergeConfig); @@ -67,7 +69,7 @@ const Layout = () => { <Paper square elevation={0} - className="layout" + className={`${isMacos ? "macos " : ""}layout`} onPointerDown={onDragging} sx={[ (theme) => ({ @@ -96,9 +98,11 @@ const Layout = () => { </div> <div className="layout__right" data-windrag> - <div className="the-bar"> - <LayoutControl /> - </div> + {!isMacos && ( + <div className="the-bar"> + <LayoutControl /> + </div> + )} <div className="the-content"> <Routes>