resolve.rs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. use super::{init, server};
  2. use crate::{core::Profiles, log_if_err, states};
  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. log_if_err!(clash.run_sidecar());
  18. *profiles = Profiles::read_file();
  19. clash.set_window(app.get_window("main"));
  20. log_if_err!(clash.activate(&profiles));
  21. log_if_err!(clash.activate_enhanced(&profiles, true, true));
  22. verge.init_sysproxy(clash.info.port.clone());
  23. log_if_err!(verge.init_launch());
  24. verge.config.enable_system_proxy.map(|enable| {
  25. log_if_err!(app
  26. .tray_handle()
  27. .get_item("system_proxy")
  28. .set_selected(enable));
  29. });
  30. resolve_window(app, verge.config.enable_silent_start.clone());
  31. }
  32. /// reset system proxy
  33. pub fn resolve_reset(app_handle: &AppHandle) {
  34. let verge_state = app_handle.state::<states::VergeState>();
  35. let mut verge = verge_state.0.lock().unwrap();
  36. verge.reset_sysproxy();
  37. }
  38. /// customize the window theme
  39. fn resolve_window(app: &App, hide: Option<bool>) {
  40. let window = app.get_window("main").unwrap();
  41. // silent start
  42. hide.map(|hide| {
  43. if hide {
  44. window.hide().unwrap();
  45. }
  46. });
  47. #[cfg(target_os = "windows")]
  48. {
  49. use window_shadows::set_shadow;
  50. use window_vibrancy::apply_blur;
  51. window.set_decorations(false).unwrap();
  52. set_shadow(&window, true).unwrap();
  53. apply_blur(&window, None).unwrap();
  54. }
  55. #[cfg(target_os = "macos")]
  56. {
  57. use tauri::LogicalSize;
  58. use tauri::Size::Logical;
  59. window.set_decorations(true).unwrap();
  60. window
  61. .set_size(Logical(LogicalSize {
  62. width: 800.0,
  63. height: 610.0,
  64. }))
  65. .unwrap();
  66. // use tauri_plugin_vibrancy::MacOSVibrancy;
  67. // #[allow(deprecated)]
  68. // window.apply_vibrancy(MacOSVibrancy::AppearanceBased);
  69. }
  70. }