Files
clash-proxy/src-tauri/src/utils/resolve.rs

105 lines
3.0 KiB
Rust
Raw Normal View History

2022-11-17 17:07:13 +08:00
use crate::config::Config;
2022-11-14 01:26:33 +08:00
use crate::log_err;
2022-11-17 17:07:13 +08:00
use crate::{core::*, utils::init, utils::server};
2021-12-27 02:29:28 +08:00
use tauri::{App, AppHandle, Manager};
/// handle something when start app
2022-11-14 01:26:33 +08:00
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());
2022-11-01 23:29:59 +08:00
2022-11-12 11:37:23 +08:00
init::init_resources(app.package_info());
2021-12-27 02:29:28 +08:00
2022-11-14 01:26:33 +08:00
// 启动核心
log_err!(CoreManager::global().init());
2022-11-14 01:26:33 +08:00
// setup a simple http server for singleton
server::embed_server(app.app_handle());
2021-12-27 02:29:28 +08:00
2022-11-14 01:45:58 +08:00
log_err!(tray::Tray::update_systray(&app.app_handle()));
2022-11-17 17:07:13 +08:00
let silent_start = { Config::verge().data().enable_silent_start.clone() };
2022-11-14 01:26:33 +08:00
if !silent_start.unwrap_or(false) {
2022-11-12 11:37:23 +08:00
create_window(&app.app_handle());
}
2022-11-14 01:26:33 +08:00
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());
2021-12-27 02:29:28 +08:00
}
/// reset system proxy
2022-09-11 20:58:55 +08:00
pub fn resolve_reset() {
2022-11-14 01:26:33 +08:00
log_err!(sysopt::Sysopt::global().reset_sysproxy());
log_err!(CoreManager::global().stop_core());
2021-12-27 02:29:28 +08:00
}
2022-02-20 23:46:13 +08:00
2022-05-25 16:45:18 +08:00
/// create main window
pub fn create_window(app_handle: &AppHandle) {
2022-11-12 11:37:23 +08:00
if let Some(window) = app_handle.get_window("main") {
let _ = window.unminimize();
let _ = window.show();
let _ = window.set_focus();
return;
}
2022-11-12 11:37:23 +08:00
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);
}
}
});
}
2022-11-12 11:37:23 +08:00
Err(err) => log::error!(target: "app", "{err}"),
}
2022-05-25 16:45:18 +08:00
}
2022-11-12 11:37:23 +08:00
#[cfg(target_os = "macos")]
2022-11-17 20:19:40 +08:00
crate::log_err!(builder.decorations(true).inner_size(800.0, 642.0).build());
2022-05-25 16:45:18 +08:00
2022-11-12 11:37:23 +08:00
#[cfg(target_os = "linux")]
2022-11-17 20:19:40 +08:00
crate::log_err!(builder
2022-11-12 11:37:23 +08:00
.decorations(false)
.transparent(true)
.inner_size(800.0, 636.0)
.build());
2022-05-25 16:45:18 +08:00
}