I'm trying to do an Applescript to enable or not SleepDisabled (using pmset) depending on the state of SleepDisabled.

Something like :

set SuperSleep to do shell script "return status of SleepDisabled"
if SuperSleep is equal to "0" then
do shell script "sudo pmset -a disablesleep 1" user name "Myname" password "Mypassword" with administrator privileges
do shell script "sudo pmset -a disablesleep 0" user name "Myname" password "Mypassword" with administrator privileges

I tried looking into man psmet or using defaults read but no success.

The only thing I'm thinking of is using pmset -g to shows up this :

System-wide power settings:
 SleepDisabled      0
Currently in use:
 lidwake              1
 autopoweroff         1
 standbydelayhigh     86400
 autopoweroffdelay    28800
 standbydelaylow      10800
 standby              1
 proximitywake        0
 ttyskeepawake        1
 hibernatemode        3
 powernap             0
 gpuswitch            2
 hibernatefile        /var/vm/sleepimage
 highstandbythreshold 50
 displaysleep         2
 sleep                2 (sleep prevented by coreaudiod, coreaudiod)
 tcpkeepalive         1
 halfdim              1
 acwake               0
 disksleep            10

And then look up the status of SleepDisabled on the list, but I don't know how to return the "0" or "1" of SleepDisabled...


The following works for me:

set SuperSleep to (do shell script "pmset -g | awk '/SleepDisabled/{print $2}'")

if SuperSleep is equal to "0" then
    do shell script "pmset -a disablesleep 1" with administrator privileges
    do shell script "pmset -a disablesleep 0" with administrator privileges
end if

NOTE: Do not use sudo in a do shell script command, Just use with administrator privileges as it's all that's needed when you'd normally do sudo in Terminal or a bash script. Additionally I would not include the user name "Myname" and password "Mypassword" as it is not encrypted in the file. Just type it into the dialog box brought up by the administrator privileges option.

Also note that SleepDisabled was not present in the output of pmset -g when I first tried in Terminal, and was not present until I used the sudp pmset -a disablesleep 0 command from Terminal. If this is the case on your system you'd need to adjust the code to handle that situation. You could use an if (compound) control statement.

Note: The example AppleScript code is just that and does not contain any error handling as may be appropriate. The onus is upon the user to add any error handling as may be appropriate, needed or wanted. Have a look at the try statement and error statement in the AppleScript Language Guide. See also, Working with Errors.

| improve this answer | |
  • ''pmset -g | awk '/SleepDisabled/{print $2}' '' was acutally the command line I was looking for, thanks ! I will take a look at the statement you suggest, and use ''with administrator privileges'' for more safety ;) – Edd Growl Jun 7 '19 at 13:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .