123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- use crate::config::Config;
- use crate::log_err;
- use crate::{core::*, utils::init, utils::server};
- use tauri::{App, AppHandle, Manager};
- /// handle something when start app
- pub fn resolve_setup(app: &mut App) {
- #[cfg(target_os = "macos")]
- app.set_activation_policy(tauri::ActivationPolicy::Accessory);
- handle::Handle::global().init(app.app_handle());
- init::init_resources(app.package_info());
- // 启动核心
- log_err!(CoreManager::global().init());
- // setup a simple http server for singleton
- server::embed_server(app.app_handle());
- log_err!(tray::Tray::update_systray(&app.app_handle()));
- let silent_start = { Config::verge().data().enable_silent_start.clone() };
- if !silent_start.unwrap_or(false) {
- create_window(&app.app_handle());
- }
- log_err!(sysopt::Sysopt::global().init_launch());
- log_err!(sysopt::Sysopt::global().init_sysproxy());
- log_err!(handle::Handle::update_systray_part());
- log_err!(hotkey::Hotkey::global().init(app.app_handle()));
- log_err!(timer::Timer::global().init());
- }
- /// reset system proxy
- pub fn resolve_reset() {
- log_err!(sysopt::Sysopt::global().reset_sysproxy());
- log_err!(CoreManager::global().stop_core());
- }
- /// create main window
- pub fn create_window(app_handle: &AppHandle) {
- if let Some(window) = app_handle.get_window("main") {
- let _ = window.unminimize();
- let _ = window.show();
- let _ = window.set_focus();
- return;
- }
- let builder = tauri::window::WindowBuilder::new(
- app_handle,
- "main".to_string(),
- tauri::WindowUrl::App("index.html".into()),
- )
- .title("Clash Verge")
- .center()
- .fullscreen(false)
- .min_inner_size(600.0, 520.0);
- #[cfg(target_os = "windows")]
- {
- use crate::utils::winhelp;
- use std::time::Duration;
- use tokio::time::sleep;
- use window_shadows::set_shadow;
- use window_vibrancy::apply_blur;
- match builder
- .decorations(false)
- .transparent(true)
- .inner_size(800.0, 636.0)
- .build()
- {
- Ok(_) => {
- let app_handle = app_handle.clone();
- tauri::async_runtime::spawn(async move {
- sleep(Duration::from_secs(1)).await;
- if let Some(window) = app_handle.get_window("main") {
- let _ = window.show();
- let _ = set_shadow(&window, true);
- if !winhelp::is_win11() {
- let _ = apply_blur(&window, None);
- }
- }
- });
- }
- Err(err) => log::error!(target: "app", "{err}"),
- }
- }
- #[cfg(target_os = "macos")]
- crate::log_err!(builder.decorations(true).inner_size(800.0, 642.0).build());
- #[cfg(target_os = "linux")]
- crate::log_err!(builder
- .decorations(false)
- .transparent(true)
- .inner_size(800.0, 636.0)
- .build());
- }
|