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