Я использую launchd
агент для запуска сценария оболочки всякий раз, когда подключаю свой док Thunderbolt. Я был в состоянии использовать IOKit
уведомления, чтобы определить, когда присоединяется док, но я также хочу запускать сценарий оболочки всякий раз, когда док отсоединяется.
Для того, чтобы обнаружить крепление док я использую com.apple.iokit.matching
«s device-attach
событие:
<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>
Должно быть и событие, которое будет происходить при отсоединении, хотя я еще не увлекался им. Apple документация на эту тему плачевна.
Я действительно хочу избегать использования метода опроса, который постоянно проверяет, подключено ли устройство. Некоторые лучшие решения должны
Также рычание, ControlPlane и другие подобные приложения исключены.
Редактировать:
Чтобы было ясно. Я хочу запускать скрипт оболочки каждый раз, когда эта конкретная док-станция подключается или отключается, а не всякий раз, когда какое-либо устройство подключено / отключено.