Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically wake display on OSX

I've managed to get the display to sleep immediately with

pmset displaysleepnow

in terminal, however for waking the display I've only found

pmset schedule wake "12/24/2009 00:00:00" 

which fails to work if I try to schedule anything earlier than at least 10secs from now.

Is there any way to programmatically wake the display in Cocoa? Someone has suggested IOPMAssertionDeclareUserActivity but I couldn't find any examples on this so I am struggling.

I am using Swift by the way, but Objective C code is also welcome.

like image 521
Lee Andrew Avatar asked Oct 06 '14 22:10

Lee Andrew


2 Answers

Got it working with:

  IOPMAssertionID assertionID; 
  IOPMAssertionDeclareUserActivity(CFSTR(""), kIOPMUserActiveLocal, &assertionID);
like image 65
Lee Andrew Avatar answered Nov 15 '22 05:11

Lee Andrew


Here is the answer in Swift 3.x:

var assertionID : IOPMAssertionID = 0
 _ = IOPMAssertionDeclareUserActivity("" as CFString, kIOPMUserActiveLocal, &assertionID)
like image 35
Tornado Avatar answered Nov 15 '22 04:11

Tornado