¿Cómo puedo activar una aplicación Applecript o Automator cuando un dispositivo Bluetooth específico está dentro del alcance?

2

Tengo un Applescript que conecta un altavoz bluetooth a mi Mac y cambia "Reproducir efectos de sonido a través de:" a "Altavoces internos".

Quiero que este script se ejecute cada vez que enciendo mi altavoz bluetooth. Actualmente estoy activando el script manualmente con un método abreviado de teclado cada vez que enciendo el altavoz, pero sería aún más conveniente si pudiera configurar el script para que se ejecute automáticamente cada vez que el altavoz bluetooth esté disponible para la Mac, preferiblemente sin usar la tercera. software de fiesta.

¿Hay alguna manera de hacer esto?

    
pregunta Macrod 30.07.2018 - 18:55

1 respuesta

4

Este es un tipo de cosa difícil de hacer si no desea utilizar software de terceros. Sin embargo, con algunos scripts de bash y plist podemos hacer que funcione!

Primero, en su carpeta ~/Library/LaunchAgents cree el siguiente archivo .plist (en este caso lo he nombrado com.my.bluetoothdetector.plist ; si cambia el nombre, asegúrese de cambiar la línea 4 en el archivo también):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
        <string>com.my.bluetoothdetector</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/Users/YOURUSERNAME/Desktop/script.sh</string>
    </array>
        <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/com.apple.Bluetooth.plist</string>
    </array>
</dict>
</plist>

El archivo anterior llamará a cualquier secuencia de comandos que se encuentre en /Users/YOURUSERNAME/Desktop/script.sh cuando haya un cambio en el entorno Bluetooth. Por supuesto, puede cambiar la ubicación del archivo llamado desde el Escritorio a donde desee (asegurándose de que sea una ruta completa).

Ahora, haremos un script de bash que, cuando se active con nuestro archivo com.my.bluetoothdetector.plist , verificará si su dispositivo está conectado. En este caso, guardaremos este archivo en /Users/USERNAME/Desktop/script.sh :

#!/bin/bash

connectedyesorno="$(system_profiler SPBluetoothDataType | awk '/BLUETOOTHDEVICENAME/{f=1}/Connected:/ && f{print $2; exit}')"

if [ "$connectedyesorno" == "Yes" ]
then
  open /Applications/YOURAPPNAME.app
elif [ "$connectedyesorno" == "No" ]
then
  echo "Not connected..."
else
  echo "ERROR"
fi

Aquí, sustituya BLUETOOTHDEVICENAME por el nombre de su dispositivo y la parte /Applications/YOURAPPNAME.app del comando open /Applications/YOURAPPNAME.app por la ubicación de la aplicación Automator / AppleScript que desea ejecutar. También puede reemplazar esta línea por completo para ejecutar cualquier script de shell que desee cuando el dispositivo esté conectado, lo que puede anular la necesidad de que tenga una aplicación de AppleScript / Automator separada.

Finalmente, usa el comando:

launchctl load ~/Library/LaunchAgents/com.my.bluetoothdetector.plist

Esto iniciará el proceso que buscará el cambio en el entorno Bluetooth y luego llamará al script.bash cuando se detecte.

Ahora, con suerte, cuando conecte el dispositivo Bluetooth a su computadora, después de unos segundos, su archivo AppleScript / Automator debería ejecutarse.

  

Tengo un Applescript que conecta un altavoz bluetooth a mi Mac ...

Los dispositivos Bluetooth conectados previamente deben conectarse automáticamente a una Mac cuando estén disponibles. Si este no es el caso para usted, tal vez haya algún tipo de problema relacionado con la configuración de su Bluetooth. Echa un vistazo a este artículo si el problema persiste.

P.S. En el futuro, si desea eliminar esto, ejecute los siguientes comandos:

launchctl unload ~/Library/LaunchAgents/com.my.bluetoothdetector.plist
rm -r ~/Library/LaunchAgents/com.my.bluetoothdetector.plist
rm -r ~/Desktop/script.sh
    
respondido por el Tom 01.08.2018 - 19:50

Lea otras preguntas en las etiquetas