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