我是 Automator 的新手。我想让桌面壁纸根据屏幕亮度而变化,屏幕亮度会自动调整到房间的光线(基本上是桌面的自动亮/暗模式)。
有没有类似文件夹操作的功能,由自定义事件触发,而不是通过将文件添加到文件夹来触发?我需要它在屏幕亮度变化时触发,然后根据亮度决定是否需要更改壁纸。
我目前拥有的
以下 AppleScript 可以满足我的所有需求:
set brightness to do shell script "nvram backlight-level | awk '{print $2}'"
if brightness is equal to "8%00" or brightness is equal to "%16%00" or brightness is equal to "%25%00" or brightness is equal to "%00%00" then
setWallpaper("dark")
else
setWallpaper("bright")
end if
on setWallpaper(imageName)
tell application "System Events"
tell every desktop
set picture to "/Users/Ryn/Desktop/wallpapers/" & imageName & ".png"
end tell
end tell
end setWallpaper
剩下唯一要做的事情就是弄清楚每次屏幕亮度改变时如何运行它。
答案1
对于使用最新版本的 macOS Mojave 的我来说,这很有效。
您可以使用 Automator,但在这种情况下没有必要。将以下 AppleScript 代码直接粘贴到脚本编辑器应用程序中,然后在脚本编辑器中将其保存为“保持打开的应用程序”。现在您需要做的就是启动您的新应用程序(它会一直保持打开状态,直到您实际选择退出它),每 180 秒(3 分钟),您的 shell 脚本命令就会运行一次。您可以在代码中将 180 秒的值更改为您想要的任何值。
checkBrightness() -- runs once on opening this app then the idle handler takes over
on idle
checkBrightness()
return 180 -- in seconds (runs the shell script command every 3 min.)
end idle
on checkBrightness()
set brightness to do shell script "nvram backlight-level | awk '{print $2}'"
if brightness is equal to "8%00" or brightness is equal to "%16%00" or brightness is equal to "%25%00" or brightness is equal to "%00%00" then
setWallpaper("dark")
else
setWallpaper("bright")
end if
end checkBrightness
on setWallpaper(imageName)
tell application "System Events"
--tell every desktop (couldnt get this to work)
tell current desktop
set picture to "/Users/Ryn/Desktop/wallpapers/" & imageName & ".png"
end tell
end tell
end setWallpaper
如果您不希望此应用程序持续在后台运行,还有另一种选择。例如,如果您希望此应用程序仅运行 4 小时,则可以使用以下空闲处理程序。
on idle
repeat 16 times
delay (15 * minutes) --(waits to run the shell script command every 15 min.)
checkBrightness()
end repeat
end idle
使用此空闲处理程序的唯一缺点是,退出正在运行时应用程序的唯一方法是“强制退出”该应用程序,因为正常的“退出”命令不起作用。