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

使用此空閒處理程序的唯一缺點是,在應用程式運行時退出應用程式的唯一方法是“強制退出”應用程序,因為正常的“退出”命令將不起作用。

相關內容