Ich bin neu bei der Verwendung von Automator. Ich versuche, mein Desktop-Hintergrundbild entsprechend der Bildschirmhelligkeit zu ändern, die sich automatisch an das Licht in meinem Zimmer anpasst (im Grunde ein automatischer Hell-/Dunkelmodus für den Desktop).
Gibt es so etwas wie eine Ordneraktion, die durch ein benutzerdefiniertes Ereignis ausgelöst wird, anstatt durch das Hinzufügen von Dateien zu einem Ordner? Ich brauche sie, damit sie ausgelöst wird, wenn sich die Bildschirmhelligkeit ändert, und dann je nach Helligkeit entschieden wird, ob das Hintergrundbild geändert werden muss.
Was ich bisher habe
Das folgende AppleScript macht alles, was ich brauche:
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
Sie müssen nur noch herausfinden, wie Sie es bei jeder Änderung der Bildschirmhelligkeit ausführen.
Antwort1
Dies funktioniert bei mir mit der neuesten Version von macOS Mojave.
Sie können Automator verwenden, aber das ist in dieser Situation nicht notwendig. Fügen Sie den folgenden AppleScript-Code direkt in die Script Editor-App ein und speichern Sie ihn dann als „offen bleibende Anwendung“ im Script Editor. Jetzt müssen Sie nur noch Ihre neue App starten (die geöffnet bleibt, bis Sie sie tatsächlich beenden) und alle 180 Sekunden (3 Minuten) wird Ihr Shell-Skriptbefehl ausgeführt. Der Wert von 180 Sekunden kann im Code nach Belieben geändert werden.
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
Es gibt eine weitere Option, wenn Sie nicht möchten, dass diese Anwendung kontinuierlich im Hintergrund ausgeführt wird. Wenn Sie beispielsweise möchten, dass diese App nur 4 Stunden lang ausgeführt wird, können Sie stattdessen den folgenden Leerlaufhandler verwenden.
on idle
repeat 16 times
delay (15 * minutes) --(waits to run the shell script command every 15 min.)
checkBrightness()
end repeat
end idle
Der einzige Nachteil bei der Verwendung dieses Idle-Handlers besteht darin, dass die einzige Möglichkeit, die App während der Ausführung zu beenden, darin besteht, sie durch „Erzwingen des Beendens“ zu beenden, da der normale Befehl „Beenden“ nicht funktioniert.