我的Mac的背光灯有问题。有时当我打开它时,背光灯不亮。但是,如果我手动强制屏幕进入休眠状态并醒来几次,则它确实会亮起。所以我想写一个applescript来自动化这个过程。 我看过... How do I wake from display sleep in OSX 10.7.4? 但这不是用Applescript编写的(或者如果不是,我将不知道如何运行它。
我尝试了以下
do shell script "pmset displaysleepnow"
tell application "Google Chrome"
activate
end tell
do shell script "pmset displaysleepnow"
tell application "Google Chrome"
quit
end tell
但是屏幕黑屏且永不亮起。我也尝试过根据一些问题使用咖啡因。我尝试使用代码来移动鼠标和/或以编程方式单击鼠标。
如果我只运行displaysleepnow,然后再运行“ activate chrome”,但是如果再次执行displaysleepnow,则似乎没有任何东西可以重新激活它。
我正在使用macOS 10.14.4
答案 0 :(得分:1)
一种解决方法是:
考虑利用以下AppleScript满足您的要求:
set wakeAfterSeconds to "15"
set myPassword to "xxxxxxxxxx"
set now to do shell script "date -r $(date +%s) '+%m/%d/%y %H:%M:%S'"
set wakeTime to do shell script "date -jv +" & wakeAfterSeconds & "S -f " & ¬
quoted form of "%m/%d/%y %H:%M:%S" & " " & quoted form of now & " " & ¬
quoted form of "+%m/%d/%y %H:%M:%S"
do shell script "pmset schedule wake " & quoted form of wakeTime & ¬
" && pmset displaysleepnow" password myPassword with administrator privileges
读取的行;
set now to do shell script "date -r $(date +%s) '+%m/%d/%y %H:%M:%S'"
基本上使用Applescript date
命令执行以下bash do shell script
命令,以获取当前日期/时间:
$ date -r $(date +%s) '+%m/%d/%y %H:%M:%S'
这会将格式为MM/DD/YY HH:MM:SS
的当前日期/时间分配给名为now
的变量。
行阅读;
set wakeTime to do shell script "date -jv +" & wakeAfterSeconds & "S -f " & ¬
quoted form of "%m/%d/%y %H:%M:%S" & " " & quoted form of now & " " & ¬
quoted form of "+%m/%d/%y %H:%M:%S"
通过添加 x 编号获得将来的日期/时间。当前日期/时间的秒数(即,增加15秒)。将来的日期/时间(再次使用shell date
实用程序来计算)被分配给名为wakeTime
的变量。
显示以下内容的行:
do shell script "pmset schedule wake " & quoted form of wakeTime & ¬
" && pmset displaysleepnow" password myPassword with administrator privileges
利用pmset
实用程序执行以下两项任务:
您需要设置编号。分配给wakeAfterSeconds
变量的秒数(秒)为适合您的系统的值。您可能会发现需要增加或减少此值。
从本质上讲,您将wakeAfterSeconds
值设置为的秒数必须大于显示器进入睡眠模式所花费的秒数-必须先入睡,然后才能进入醒了!
使用pmset
实用程序设置脚本以唤醒计算机必须以root用户身份运行,因此需要您输入密码。因此,您需要根据需要设置myPassword
变量的值。
您提到过;
...如果我手动强制屏幕进入睡眠状态并几次,它会亮起。
在这种情况下,您可能需要考虑将上述代码包装在repeat
语句中。
例如,以下代码重复该过程两次:
set wakeAfterSeconds to "15"
set myPassword to "xxxxxxxxxx"
repeat 2 times
set now to do shell script "date -r $(date +%s) '+%m/%d/%y %H:%M:%S'"
set wakeTime to do shell script "date -jv +" & wakeAfterSeconds & "S -f " & ¬
quoted form of "%m/%d/%y %H:%M:%S" & " " & quoted form of now & " " & ¬
quoted form of "+%m/%d/%y %H:%M:%S"
do shell script "pmset schedule wake " & quoted form of wakeTime & ¬
" && pmset displaysleepnow" password myPassword with administrator privileges
delay wakeAfterSeconds
end repeat
使用“登录项” 自动运行应用程序:
此外,您可能需要考虑将上述AppleScript应用程序添加到登录项。启动计算机时,这将自动运行该应用程序。为此:
+
并选择AppleScript应用程序。在旧版本的macOS(即OSX)上,pmset
实用程序未包含displaysleepnow
命令。它只有pmset sleepnow
命令。因此,对于那些希望在较旧的OSX上运行此命令的人,您需要将最后一个do shell script
命令更改为:
do shell script "pmset schedule wake " & quoted form of wakeTime & ¬
" && pmset sleepnow" password myPassword with administrator privileges
^^^^^^^^^^^^^^