Questa è una sorta di cosa complicata da fare se non si desidera utilizzare software di terze parti. Tuttavia, con alcuni script bash e plist possiamo farlo funzionare!
Per prima cosa, nella tua cartella ~/Library/LaunchAgents
crea il seguente file .plist (in questo caso l'ho chiamato com.my.bluetoothdetector.plist
; se cambi il nome, assicurati di cambiare anche la riga 4 nel file):
<?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>
Il file sopra richiamerà qualunque script si trovi in /Users/YOURUSERNAME/Desktop/script.sh
quando c'è un cambiamento nell'ambiente Bluetooth. Ovviamente puoi cambiare la posizione del file richiamato dal desktop dove vuoi (assicurandoti che sia un percorso completo).
Ora creeremo uno script bash, che, quando attivato dal nostro file com.my.bluetoothdetector.plist
, controllerà se il tuo dispositivo è connesso. In questo caso, salveremo questo file in /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
Qui, sostituisci BLUETOOTHDEVICENAME
per il nome del tuo dispositivo e la parte /Applications/YOURAPPNAME.app
del comando open /Applications/YOURAPPNAME.app
per la posizione dell'applicazione Automator / AppleScript che desideri eseguire. Puoi anche sostituire questa riga interamente per eseguire qualsiasi script di shell che desideri quando il dispositivo è connesso, il che potrebbe annullare la necessità di chiamare un'app separata di AppleScript / Automator.
Infine, usa il comando:
launchctl load ~/Library/LaunchAgents/com.my.bluetoothdetector.plist
Questo avvierà il processo che controllerà la modifica nell'ambiente Bluetooth e quindi richiamerà script.bash
quando viene rilevato.
Ora, si spera, quando si collega il dispositivo Bluetooth al computer, dopo pochi secondi, il file AppleScript / Automator dovrebbe essere eseguito!
I have an Applescript that connects a bluetooth speaker to my Mac...
I dispositivi bluetooth collegati in precedenza devono connettersi automaticamente a un Mac quando diventano disponibili. Se questo non è il tuo caso, forse c'è qualche problema con le tue impostazioni bluetooth. Dai un'occhiata a questo articolo se il problema persiste.
P.S. In futuro, se vuoi eliminarlo, esegui i seguenti comandi:
launchctl unload ~/Library/LaunchAgents/com.my.bluetoothdetector.plist
rm -r ~/Library/LaunchAgents/com.my.bluetoothdetector.plist
rm -r ~/Desktop/script.sh