use super::{init, server}; use crate::{core::Profiles, log_if_err, states}; use tauri::{App, AppHandle, Manager}; /// handle something when start app pub fn resolve_setup(app: &App) { resolve_window(app); // setup a simple http server for singleton server::embed_server(&app.handle()); // init app config init::init_app(app.package_info()); // init states let clash_state = app.state::(); let verge_state = app.state::(); let profiles_state = app.state::(); let mut clash = clash_state.0.lock().unwrap(); let mut verge = verge_state.0.lock().unwrap(); let mut profiles = profiles_state.0.lock().unwrap(); log_if_err!(clash.run_sidecar()); *profiles = Profiles::read_file(); clash.set_window(app.get_window("main")); log_if_err!(clash.activate(&profiles, true)); verge.init_sysproxy(clash.info.port.clone()); // enable tun mode if verge.config.enable_tun_mode.clone().unwrap_or(false) && verge.cur_sysproxy.is_some() && verge.cur_sysproxy.as_ref().unwrap().enable { log::info!("enable tun mode"); clash.tun_mode(true).unwrap(); } verge.init_launch(); log_if_err!(verge.sync_launch()); } /// reset system proxy pub fn resolve_reset(app_handle: &AppHandle) { let verge_state = app_handle.state::(); let mut verge = verge_state.0.lock().unwrap(); verge.reset_sysproxy(); } /// customize the window theme fn resolve_window(app: &App) { let window = app.get_window("main").unwrap(); #[cfg(target_os = "windows")] { use window_shadows::set_shadow; use window_vibrancy::apply_blur; window.set_decorations(false).unwrap(); set_shadow(&window, true).unwrap(); apply_blur(&window, None).unwrap(); } #[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); } }