2 votes

Automator : changement de fond d'écran lorsque la luminosité de l'écran est modifiée

J'utilise Automator pour la première fois. J'essaie de faire en sorte que le fond d'écran de mon bureau change en fonction de la luminosité de mon écran, qui s'adapte automatiquement à la lumière de ma pièce (en gros, un mode automatique clair/foncé pour le bureau).

Existe-t-il quelque chose comme Folder Action qui est déclenché par un événement personnalisé au lieu d'ajouter des fichiers à un dossier ? J'ai besoin qu'il se déclenche lorsque la luminosité de l'écran change, et qu'en fonction de la luminosité, il décide si le papier peint doit être changé.

Ce que j'ai jusqu'à présent

L'AppleScript suivant fait tout ce dont j'ai besoin :

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

Il ne reste plus qu'à trouver comment l'exécuter à chaque fois que la luminosité de l'écran change.

0voto

Khaleel Hmoz Points 184

Cela fonctionne pour moi avec la dernière version de macOS Mojave.

Vous pouvez utiliser Automator mais ce n'est pas nécessaire dans cette situation. Collez le code AppleScript suivant directement dans l'application script Editor, puis enregistrez-la comme "application restant ouverte" dans script Editor. Maintenant, tout ce que vous avez à faire est de lancer votre nouvelle application (qui reste ouverte jusqu'à ce que vous choisissiez effectivement de la quitter) et toutes les 180 secondes (3 minutes), votre commande script script sera exécutée. La valeur de 180 secondes peut être modifiée dans le code comme vous le souhaitez.

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

Il existe une autre option si vous ne souhaitez pas que cette application fonctionne en permanence en arrière-plan. Par exemple, si vous souhaitez que cette application ne fonctionne que pendant 4 heures, vous pouvez utiliser le gestionnaire d'inactivité suivant.

on idle
    repeat 16 times
        delay (15 * minutes) --(waits to run the shell script command every 15 min.)
        checkBrightness()
    end repeat
end idle

Le seul inconvénient de l'utilisation de ce gestionnaire d'inactivité est que le seul moyen de quitter l'application en cours d'exécution est de la "forcer", car la commande "Quitter" normale ne fonctionne pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X