Avez-vous déjà été dans une situation où vous avez besoin d'ouvrir une application mais vous voulez seulement ouvrir cette application si un périphérique particulier est connecté ? Par exemple, lorsqu’il y a un lien symbolique vers une immense bibliothèque dépendante sur un disque externe. Ou l’interface audio doit être attaché avant l’ouverture de la station audionumérique.
L’exécution de ces applications sans être conforme aux dispositions peut gâcher vos paramètres et vous devrez peut-être réajuster manuellement les réglages, les chemins, nettoyages, etc. Finalement des données peuvent être perdues ou supprimées.
Il est trop facile d’oublier d’avoir un dispositif non connecté. Cela peut être assez ennuyeux et est contre-productif d’un flux de travaux de création : Une idée apparaît et vous voulez commencer immédiatement à travailler sur elle mais alors vous êtes distrait en réparant le désordre causée par l'absence du périphérique attaché avant d’ouvrir le logiciel.
Mon cas particulier
Quand j'oublie de brancher l’interface audio avant que je lance l’application Logic Pro X il va utiliser le pilote audio du système par défaut. Alors je dois manuellement modifier les paramètres et dois m’assurer que certaines choses ne sont pas modifiés comme le taux d’échantillonnage, entre autres.
Un autre cas est lorsque j’ouvre le logiciel de traitement de photos ou vidéos sans un disque externe connecté dans lequel la bibliothèque est stockée. Puis une nouvelle bibliothèque générique sera crée.
Conditions préalables
Avec la commande suivante, il est possible de liste tous les périphériques USB. Il s’agit de la première étape pour trouver l’interface 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
Ensuite, nous pouvons isoler l’interface audio.
# Grep Duet USB Device
❯ ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*' | grep "Duet USB"
Duet USB
La commande suivante aide à identifier si un volume nommé DATA
est monté.
# List external Disk
❯ mount | grep /Volumes/DATA
/Volumes/DATA
Avec cette information, nous pouvons écrire une fonction et mis en place un flux de travaux automatique qui répond à nos besoins.
Fonction
Vous pouvez mettre ceci dans votre .zshrc
/.bashrc
/etc.
# 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
}
Description
La fonction music
vérifie si en tant que Duet USB
et /Volumes/Data
sont attachés.
La sortie pour ne pas réprondre aux critères est :
❯ music
Both `DATA` and `Duet USB` must be connected to proceed.
Personnalisez si nécessaire. Les variables peuvent être : Duet USB
, /Volumes/DATA
, paths
Configuration du système
- OS X 10.11 El Capitan
- ZSH avec
.zshrc
- Interface audio USB
- Disque externe