diff --git a/src-tauri/src/sysopt.rs b/src-tauri/src/sysopt.rs
index b21e769f5ac714471d247b8c58ee51210a72a424..4e42154fed11b6b6ecfa17edc7bf5dfbc0fb8016 100644
--- a/src-tauri/src/sysopt.rs
+++ b/src-tauri/src/sysopt.rs
@@ -1,46 +1,71 @@
 use serde::{Deserialize, Serialize};
 use std::io;
 
-#[cfg(target_os = "windows")]
-use winreg::enums::*;
-#[cfg(target_os = "windows")]
-use winreg::RegKey;
-
 #[derive(Debug, Deserialize, Serialize)]
-pub struct ProxyConfig {
-  enable: u32,
+pub struct SysProxyConfig {
+  enable: bool,
   server: String,
   bypass: String,
 }
 
 #[cfg(target_os = "windows")]
-/// Get the windows system proxy config
-pub fn get_proxy_config() -> io::Result<ProxyConfig> {
-  let hkcu = RegKey::predef(HKEY_CURRENT_USER);
-  let cur_var = hkcu.open_subkey_with_flags(
-    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
-    KEY_READ,
-  )?;
-
-  Ok(ProxyConfig {
-    enable: cur_var.get_value("ProxyEnable")?,
-    server: cur_var.get_value("ProxyServer")?,
-    bypass: cur_var.get_value("ProxyOverride")?,
-  })
+mod win {
+  use super::*;
+  use winreg::enums::*;
+  use winreg::RegKey;
+
+  /// Get the windows system proxy config
+  pub fn get_proxy_config() -> io::Result<SysProxyConfig> {
+    let hkcu = RegKey::predef(HKEY_CURRENT_USER);
+    let cur_var = hkcu.open_subkey_with_flags(
+      "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
+      KEY_READ,
+    )?;
+
+    Ok(SysProxyConfig {
+      enable: cur_var.get_value::<u32, _>("ProxyEnable")? == 1u32,
+      server: cur_var.get_value("ProxyServer")?,
+      bypass: cur_var.get_value("ProxyOverride")?,
+    })
+  }
+
+  /// Set the windows system proxy config
+  pub fn set_proxy_config(config: &SysProxyConfig) -> io::Result<()> {
+    let hkcu = RegKey::predef(HKEY_CURRENT_USER);
+    let cur_var = hkcu.open_subkey_with_flags(
+      "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
+      KEY_SET_VALUE,
+    )?;
+
+    let enable: u32 = if config.enable { 1u32 } else { 0u32 };
+
+    cur_var.set_value("ProxyEnable", &enable)?;
+    cur_var.set_value("ProxyServer", &config.server)?;
+    cur_var.set_value("ProxyOverride", &config.bypass)?;
+
+    Ok(())
+  }
 }
 
-#[cfg(target_os = "windows")]
-/// Set the windows system proxy config
-pub fn set_proxy_config(config: &ProxyConfig) -> io::Result<()> {
-  let hkcu = RegKey::predef(HKEY_CURRENT_USER);
-  let cur_var = hkcu.open_subkey_with_flags(
-    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
-    KEY_SET_VALUE,
-  )?;
-
-  cur_var.set_value("ProxyEnable", &config.enable)?;
-  cur_var.set_value("ProxyServer", &config.server)?;
-  cur_var.set_value("ProxyOverride", &config.bypass)?;
-
-  Ok(())
+#[cfg(target_os = "macos")]
+mod macos {
+  use super::*;
+
+  pub fn get_proxy_config() -> io::Result<SysProxyConfig> {
+    Ok(SysProxyConfig {
+      enable: false,
+      server: "server".into(),
+      bypass: "bypass".into(),
+    })
+  }
+
+  pub fn set_proxy_config(config: &SysProxyConfig) -> io::Result<()> {
+    Ok(())
+  }
 }
+
+#[cfg(target_os = "windows")]
+pub use win::*;
+
+#[cfg(target_os = "macos")]
+pub use macos::*;