Using swift to detect osx system events: Sleep / Wakeup / Lock/unlock / Screensaver / Display change
// Display connected / disconnected
NotificationCenter.default.addObserver(self, selector: #selector(displayConfigurationChanged), name: NSApplication.didChangeScreenParametersNotification, object: nil)
// System sleep / wakeup
let center = NSWorkspace.shared.notificationCenter
center.addObserver(self,
selector: #selector(systemDidWake),
name: NSWorkspace.didWakeNotification,
object: nil)
center.addObserver(self,
selector: #selector(systemWillSleep),
name: NSWorkspace.willSleepNotification,
object: nil)
// Screensaver starts
DistributedNotificationCenter.default().addObserver(self, selector: #selector(screenIsLocked(_:)), name: Notification.Name("com.apple.screenIsLocked"), object: nil)
// Screensaver ends
DistributedNotificationCenter.default().addObserver(self, selector: #selector(screenIsUnlocked), name: Notification.Name("com.apple.screenIsUnlocked"), object: nil)
@objc private func displayConfigurationChanged() {
// Handle display configuration change
print("Display configuration changed")
}
@objc private func systemDidWake() {
// Handle system wakeup
print("System woke up")
}
@objc private func systemWillSleep() {
// Handle system sleep
print("System will sleep")
}
@objc private func screenIsLocked() {
// Handle screen locking (screensaver starts)
print("Screen is locked")
}
@objc private func screenIsUnlocked() {
// Handle screen locking (screensaver starts)
print("Screen is unlocked")
}
remove
NotificationCenter.default.removeObserver(self)
NSWorkspace.shared.notificationCenter.removeObserver(self)
DistributedNotificationCenter.default().removeObserver(self)
+V why_null 请备注:from博客园
浙公网安备 33010602011771号