resolve.rs 2.2 KB

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