He configurado un montón de scripts que deben suceder cuando conecto mi base Thunderbolt en casa (deshabilitar wifi, habilitar bluetooth, ...).
Para detectar el muelle de Thunderbolt, uso el siguiente servicio launchctl
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>romeovs.dock.agent</string>
<key>ProgramArguments</key>
<array>
<string>/Users/romeovs/.bin/dock/run.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>LaunchEvents</key>
<dict>
<key>com.apple.notifyd.matching</key>
<dict>
<key>com.apple.system.config.network_change</key>
<dict>
<key>Notification</key>
<string>com.apple.system.config.network_change</string>
</dict>
</dict>
</dict>
</dict>
</plist>
Este servicio escucha a launchd
para que ocurra un cambio de red (detección de la red cableada que está conectada al dock). Esta configuración parece funcionar pero es muy lenta de detectar y actuar cuando el dock está conectado.
Ya se necesita mucho tiempo para que se configure la red de acoplamiento, pero después de eso, también toma otros 5 segundos antes de que se llame al script.
¿Hay alguna manera de hacer que el servicio detecte los cambios en la red más rápido (sin configurar un servicio de sondeo)?