Automator:当屏幕亮度改变时更改壁纸

Automator:当屏幕亮度改变时更改壁纸

我是 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

使用此空闲处理程序的唯一缺点是,退出正在运行时应用程序的唯一方法是“强制退出”该应用程序,因为正常的“退出”命令不起作用。

相关内容