Eu sou novo no uso do Automator. Estou tentando fazer com que o papel de parede da minha área de trabalho mude de acordo com o brilho da tela, que se ajusta automaticamente à luz da minha sala (basicamente um modo claro/escuro automático para a área de trabalho).
Existe algo como Folder Action que é acionado por um evento personalizado em vez de adicionar arquivos a uma pasta? Preciso que ele seja acionado quando o brilho da tela mudar e, dependendo do brilho, decidir se o papel de parede precisa ser alterado.
O que eu tenho até agora
O seguinte AppleScript faz tudo que preciso:
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
A única coisa que resta é descobrir como executá-lo sempre que o brilho da tela mudar.
Responder1
Isso funciona para mim usando a versão mais recente do macOS Mojave.
Você pode usar o Automator, mas não é necessário para esta situação. Cole o seguinte código AppleScript diretamente no aplicativo Editor de Scripts e salve-o como um "aplicativo aberto" no Editor de Scripts. Agora tudo que você precisa fazer é iniciar seu novo aplicativo (que permanece aberto até que você decida encerrá-lo) e a cada 180 segundos (3 minutos), seu comando shell script será executado. O valor de 180 segundos pode ser alterado no código para o que você desejar.
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
Existe outra opção se você não quiser que este aplicativo seja executado continuamente em segundo plano. Por exemplo, se quiser que este aplicativo seja executado apenas por 4 horas, você pode usar o seguinte manipulador ocioso.
on idle
repeat 16 times
delay (15 * minutes) --(waits to run the shell script command every 15 min.)
checkBrightness()
end repeat
end idle
A única desvantagem de usar esse manipulador ocioso é que a única maneira de sair do aplicativo enquanto ele está em execução seria "Forçar o encerramento" do aplicativo porque o comando normal "Sair" não funcionará.