resolve.rs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. use super::{init, server};
  2. use crate::{core::Profiles, states};
  3. use tauri::{App, AppHandle, Manager};
  4. /// handle something when start app
  5. pub fn resolve_setup(app: &App) {
  6. resolve_window(app);
  7. // setup a simple http server for singleton
  8. server::embed_server(&app.handle());
  9. // init app config
  10. init::init_app(app.package_info());
  11. // init states
  12. let clash_state = app.state::<states::ClashState>();
  13. let verge_state = app.state::<states::VergeState>();
  14. let profiles_state = app.state::<states::ProfilesState>();
  15. let mut clash = clash_state.0.lock().unwrap();
  16. let mut verge = verge_state.0.lock().unwrap();
  17. let mut profiles = profiles_state.0.lock().unwrap();
  18. if let Err(err) = clash.run_sidecar() {
  19. log::error!("{err}");
  20. }
  21. *profiles = Profiles::read_file();
  22. if let Err(err) = profiles.activate(&clash) {
  23. log::error!("{err}");
  24. }
  25. verge.init_sysproxy(clash.info.port.clone());
  26. // enable tun mode
  27. if verge.config.enable_tun_mode.clone().unwrap_or(false)
  28. && verge.cur_sysproxy.is_some()
  29. && verge.cur_sysproxy.as_ref().unwrap().enable
  30. {
  31. log::info!("enable tun mode");
  32. clash.tun_mode(true).unwrap();
  33. }
  34. verge.init_launch();
  35. if let Err(err) = verge.sync_launch() {
  36. log::error!("{err}");
  37. }
  38. }
  39. /// reset system proxy
  40. pub fn resolve_reset(app_handle: &AppHandle) {
  41. let verge_state = app_handle.state::<states::VergeState>();
  42. let mut verge = verge_state.0.lock().unwrap();
  43. verge.reset_sysproxy();
  44. }
  45. /// customize the window theme
  46. fn resolve_window(app: &App) {
  47. let window = app.get_window("main").unwrap();
  48. #[cfg(target_os = "windows")]
  49. {
  50. use tauri_plugin_shadows::Shadows;
  51. use tauri_plugin_vibrancy::Vibrancy;
  52. window.set_decorations(false).unwrap();
  53. window.set_shadow(true);
  54. window.apply_blur();
  55. }
  56. #[cfg(target_os = "macos")]
  57. {
  58. use tauri::LogicalSize;
  59. use tauri::Size::Logical;
  60. window.set_decorations(true).unwrap();
  61. window
  62. .set_size(Logical(LogicalSize {
  63. width: 800.0,
  64. height: 610.0,
  65. }))
  66. .unwrap();
  67. // use tauri_plugin_vibrancy::MacOSVibrancy;
  68. // #[allow(deprecated)]
  69. // window.apply_vibrancy(MacOSVibrancy::AppearanceBased);
  70. }
  71. }