主界面修改及代理模块初始化

This commit is contained in:
zhongluofeng
2026-07-15 18:22:07 +08:00
parent 29a5f456cb
commit fb361aff9a
39 changed files with 4768 additions and 396 deletions
+86 -4
View File
@@ -1,21 +1,92 @@
use tauri::Manager;
mod logger;
mod mihomo_manager;
mod process_manager;
use logger::{
clear_logs, get_log_info, get_logs, log_message, LogManager,
};
use mihomo_manager::{
proxy_activate_profile, proxy_clear_system_proxy, proxy_close_connection, proxy_delete_profile,
proxy_get_connections, proxy_get_proxies, proxy_get_settings, proxy_get_system_proxy,
proxy_import_profile, proxy_kernel_info, proxy_patch_configs, proxy_restart, proxy_save_settings,
proxy_select_proxy, proxy_set_system_proxy, proxy_start, proxy_status, proxy_stop,
proxy_test_delay, proxy_update_profile, proxy_version, MihomoManager,
};
use process_manager::{
get_all_process_status, get_process_status, start_monitoring_thread, start_process,
stop_all_processes, stop_process, ProcessManager,
};
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}
#[tauri::command]
fn quit_app() {
fn quit_app(state: tauri::State<'_, ProcessManager>) {
// 退出前停止所有子进程
state.stop_all();
std::process::exit(0);
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_autostart::Builder::new().build())
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![greet, quit_app])
.manage(ProcessManager::new())
.invoke_handler(tauri::generate_handler![
greet,
quit_app,
start_process,
stop_process,
get_process_status,
get_all_process_status,
stop_all_processes,
log_message,
get_logs,
clear_logs,
get_log_info,
proxy_get_settings,
proxy_save_settings,
proxy_kernel_info,
proxy_status,
proxy_start,
proxy_stop,
proxy_restart,
proxy_version,
proxy_get_proxies,
proxy_select_proxy,
proxy_test_delay,
proxy_get_connections,
proxy_close_connection,
proxy_patch_configs,
proxy_import_profile,
proxy_update_profile,
proxy_delete_profile,
proxy_activate_profile,
proxy_set_system_proxy,
proxy_clear_system_proxy,
proxy_get_system_proxy
])
.setup(|app| {
// 初始化日志系统,日志目录: {app_data_dir}/logs/
let log_dir = app
.path()
.app_data_dir()
.unwrap_or_else(|_| std::path::PathBuf::from("."))
.join("logs");
app.manage(LogManager::new(log_dir));
// 初始化 MihomoManager,数据目录: {app_data_dir}/proxy/
let app_data_dir = app
.path()
.app_data_dir()
.unwrap_or_else(|_| std::path::PathBuf::from("."));
app.manage(MihomoManager::new(app_data_dir));
let open = tauri::menu::MenuItem::with_id(app, "open", "设置", true, None::<&str>)?;
let quit = tauri::menu::MenuItem::with_id(app, "quit", "退出", true, None::<&str>)?;
let menu = tauri::menu::Menu::with_items(app, &[&open, &quit])?;
@@ -32,12 +103,20 @@ pub fn run() {
}
}
"quit" => {
// 退出前停止所有子进程
if let Some(pm) = app.try_state::<ProcessManager>() {
pm.stop_all();
}
app.exit(0);
}
_ => {}
})
.on_tray_icon_event(|tray, event| {
if let tauri::tray::TrayIconEvent::Click { button: tauri::tray::MouseButton::Left, .. } = event {
if let tauri::tray::TrayIconEvent::Click {
button: tauri::tray::MouseButton::Left,
..
} = event
{
let app = tray.app_handle();
if let Some(window) = app.get_webview_window("main") {
window.show().ok();
@@ -47,6 +126,9 @@ pub fn run() {
})
.build(app)?;
// 启动进程监控线程
start_monitoring_thread(app.handle().clone());
Ok(())
})
.on_window_event(|window, event| {
@@ -57,4 +139,4 @@ pub fn run() {
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
}