Eseguire solo se dispositivo è collegato

Sei mai stato nella situazione dove è necessario aprire un'applicazione, ma si desidera solo per aprire questa particolare applicazione, se è collegato un dispositivo specifico? Per esempio, quando c'è un link simbolico a una vasta libreria di dipendente su un'unità esterna. O l'interfaccia audio deve essere collegato prima di aprire il DAW.

L'esecuzione di tali applicazioni senza rispetto di questi requisiti può rovinare le impostazioni e potrebbe essere necessario regolare manualmente le preferenze, i percorsi, fare le pulizie, ecc. Alla fine i dati possono ottenere persi o sovrascritti.

È troppo facile dimenticare che un dispositivo non è connesso. Questo può essere abbastanza fastidioso ed è controproducente per un flusso di lavoro creativo: un'idea viene in mente e si desidera iniziare immediatamente a lavorare su di esso, ma poi sei distratta fissando il disordine causato da non avere il corretto dispositivo collegato prima di aprire il software.

Mio caso particolare

Quando ho dimenticato di collegare l'interfaccia audio prima di lanciare Logic Pro X sta per utilizzare il driver audio di sistema per impostazione predefinita. Quindi devo manualmente modificare le impostazioni e assicurarsi che alcune cose non sono alterate come la frequenza di campionamento, tra le altre.

Un altro caso è quando apro il software di editing video o photo senza un disco esterno collegato dove é memorizzata la libreria. Quindi verrà creata una nuova libreria generica.

Prerequisiti

Con il comando seguente è possibile di elencare tutte le periferiche USB. Questo è il primo passo per trovare l'interfaccia audio.

# List all USB Devices
❯ ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*'
Apple Internal Keyboard / Trackpad
BRCM20702 Hub
Bluetooth USB Host Controller
Duet USB

Quindi possiamo isolare l'interfaccia audio.

# Grep Duet USB Device
❯ ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*' | grep "Duet USB"
Duet USB

Il seguente comando aiuta a identificare se è montato un volume denominato DATA.

# List external Disk
❯ mount | grep /Volumes/DATA
/Volumes/DATA

Con queste informazioni possiamo scrivere una funzione e impostare un flusso di lavoro automatico che soddisfa i nostri requisiti.

Funzione

Si può mettere questo nel .zshrc/.bashrc/ecc.

# Music workflow
music () {
    RED='\033[0;31m'
    NC='\033[0m' # No color
    if ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*' | grep "Duet USB" > /dev/null && mount | grep /Volumes/DATA > /dev/null; then
        open /System/Library/PreferencePanes/Sound.prefPane
        open ~/Music/Sheet\ Music/;
        open /Applications/Logic\ Pro\ X.app/;
        open /Applications/Apogee\ Maestro\ 2.app/;
    else
        echo "Both ${RED}`DATA`${NC} and ${RED}`Duet USB`${NC} must be connected to proceed"
    fi
}

Descrizione

La funzione music controlla se sia Duet USB che /Volumes/Data sono collegati. O esce per False o procede ad aprire il flusso di lavoro.

L'uscita per non soddisfare i requisiti è:

❯ music
Both `DATA` and `Duet USB` must be connected to proceed.

Personalizzare secondo le necessità. Le variabili possono essere: Duet USB, /Volumes/DATA, paths

Configurazione

  • OS X 10.11 El Capitan
  • ZSH con .zshrc
  • Interfaccia audio USB
  • Disco esterno