저는 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분)마다 쉘 스크립트 명령이 실행됩니다. 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
이 유휴 핸들러를 사용할 때의 유일한 단점은 앱이 실행 중인 동안 앱을 종료하는 유일한 방법은 일반적인 "종료" 명령이 작동하지 않기 때문에 앱을 "강제 종료"하는 것입니다.