Sto utilizzando un agente launchd
per eseguire uno script di shell ogni volta che collego il mio dock thunderbolt. Sono stato in grado di utilizzare le notifiche di IOKit
per rilevare quando viene collegato il dock, ma voglio anche eseguire uno script di shell ogni volta che il dock viene rimosso.
Per rilevare l'allegato del dock, utilizzo com.apple.iokit.matching
's device-attach
event:
<key>LaunchEvents</key>
<dict>
<key>com.apple.iokit.matching</key>
<dict>
<key>com.apple.device-attach</key>
<dict>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>idVendor</key>
<integer>21</integer>
<key>idProduct</key>
<integer>4</integer>
<key>IOMatchStream</key>
<true/>
<key>IOMatchLaunchStream</key>
<true/>
</dict>
</dict>
</dict>
Ci dovrebbe essere un evento che viene licenziato anche se non mi piace ancora. La documentazione della mela su questo argomento è deplorevole.
Voglio davvero evitare l'uso di un metodo di polling che continua a controllare se il dispositivo è ancora collegato. Alcune soluzioni migliori devono
Anche ringhiare, ControlPlane e altre app simili sono fuori questione.
Modifica:
Per essere chiari. Voglio eseguire uno script di shell ogni volta che questo dock specifico è connesso o disconnesso, non ogni volta che un dispositivo è collegato / scollegato.