Come posso attivare un'app Applecript o Automator quando un dispositivo Bluetooth specifico entra nel raggio d'azione?

2

Ho un oggetto Applescript che collega un altoparlante bluetooth al mio Mac e commuta "Riproduci effetti sonori tramite:" su "Altoparlanti interni".

Voglio che questo script venga eseguito ogni volta che accendo il mio altoparlante bluetooth. Attualmente sto attivando lo script manualmente con una scorciatoia da tastiera ogni volta che accendo l'altoparlante, ma sarebbe ancora più comodo se potessi impostare lo script per l'esecuzione automatica ogni volta che l'altoparlante bluetooth diventa disponibile per il Mac, preferibilmente senza usare terze parti. software di partito.

C'è un modo per farlo?

    
posta Macrod 30.07.2018 - 18:55
fonte

1 risposta

4

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
    
risposta data 01.08.2018 - 19:50
fonte

Leggi altre domande sui tag