mirror of
https://github.com/yattee/yattee.git
synced 2024-12-24 22:43:41 +00:00
35 lines
1.0 KiB
Swift
35 lines
1.0 KiB
Swift
|
import Foundation
|
||
|
import IOKit.pwr_mgt
|
||
|
|
||
|
struct ScreenSaverManager {
|
||
|
static var shared = ScreenSaverManager()
|
||
|
|
||
|
var noSleepAssertion: IOPMAssertionID = 0
|
||
|
var noSleepReturn: IOReturn?
|
||
|
|
||
|
var enabled: Bool {
|
||
|
noSleepReturn == nil
|
||
|
}
|
||
|
|
||
|
@discardableResult mutating func disable(reason: String = "Unknown reason") -> Bool {
|
||
|
guard enabled else {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
noSleepReturn = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep as CFString,
|
||
|
IOPMAssertionLevel(kIOPMAssertionLevelOn),
|
||
|
reason as CFString,
|
||
|
&noSleepAssertion)
|
||
|
return noSleepReturn == kIOReturnSuccess
|
||
|
}
|
||
|
|
||
|
@discardableResult mutating func enable() -> Bool {
|
||
|
if noSleepReturn != nil {
|
||
|
_ = IOPMAssertionRelease(noSleepAssertion) == kIOReturnSuccess
|
||
|
noSleepReturn = nil
|
||
|
return true
|
||
|
}
|
||
|
return false
|
||
|
}
|
||
|
}
|