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 コードを Script Editor アプリに直接貼り付け、Script Editor で「開いたままのアプリケーション」として保存します。これで、新しいアプリ (実際に終了するまで開いたままになります) を起動するだけで、180 秒 (3 分) ごとにシェル スクリプト コマンドが実行されます。コード内の 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
このアイドル ハンドラーを使用する唯一の欠点は、通常の「終了」コマンドが機能しないため、実行中のアプリを終了する唯一の方法がアプリを「強制終了」することになることです。