Ho creato un sacco di script che devono accadere quando collego il mio dock thunderbolt a casa (disabilita wifi, abilita bluetooth, ...).
Per rilevare il fulmine, utilizzo il seguente servizio 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>
Questo servizio ascolta launchd
per il cambio di rete (rilevando la rete cablata che è collegata al dock). Questa configurazione sembra funzionare ma è molto lento rilevare e agire quando il dock è collegato.
Ci vuole già molto tempo prima che la dock network sia impostata, ma dopo ci vogliono altri 5 secondi prima che lo script venga effettivamente chiamato.
C'è un modo per fare in modo che il servizio rilevi le modifiche alla rete più velocemente (senza impostare un servizio di polling)?