Ariver
2026-05-18 6a74e8e739c3d2db2db737b1ecb0117eb88a4129
VoiceSnapGo/internal/permissions/permissions_darwin.go
@@ -42,7 +42,10 @@
*/
import "C"
import "os/exec"
import (
   "os/exec"
   "voicesnap/internal/startup"
)
// Statuses returns the current macOS privacy permission state.
func Statuses() []Status {
@@ -65,6 +68,12 @@
         State:    grantedState(C.inputMonitoringGranted() != 0),
         Required: true,
      },
      {
         ID:       IDBackground,
         Granted:  startup.IsEnabled(),
         State:    enabledState(startup.IsEnabled()),
         Required: false,
      },
   }
}
@@ -80,6 +89,9 @@
      openSettings(id)
   case IDInputMonitoring:
      C.requestInputMonitoring()
      openSettings(id)
   case IDBackground:
      _ = startup.SetEnabled(true)
      openSettings(id)
   }
}
@@ -110,6 +122,13 @@
   return "denied"
}
func enabledState(enabled bool) string {
   if enabled {
      return "enabled"
   }
   return "disabled"
}
func openSettings(id string) {
   url := "x-apple.systempreferences:com.apple.preference.security"
   switch id {
@@ -119,6 +138,8 @@
      url = "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
   case IDInputMonitoring:
      url = "x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent"
   case IDBackground:
      url = "x-apple.systempreferences:com.apple.LoginItems-Settings.extension"
   }
   _ = exec.Command("open", url).Start()
}