Poiché launchd avvia e interrompe il processo di condivisione dello schermo, puoi creare un nuovo processo di avvio che utilizza un dizionario KeepAlive con una clausola OtherJobEnabled per legare il tuo strumento di avviso al etichetta launchd com.apple.ScreenSharing.server
All'avvio di ScreenSharing, il tuo lavoro verrà avviato anche da launchd. (o viceversa se preferisci)
Il lavoro di sistema che desideri inserire è /System/Library/LaunchAgents/com.apple.ScreenSharing.plist
Il tuo plist dovrebbe andare in ~/Library/LaunchAgents
o /Library/LaunchAgents
a seconda se vuoi solo un utente avvisato, o tutti gli utenti avvisati. Vorrei anche impostare LimitLoadToSessionType in Aqua .
Come menzionato da @ jm666 - Growl può fare alcune notifiche molto belle con un sacco di controllo e trasparenza, sovrapposizione ecc.
growlnotify --appIcon Screen\ Sharing "Screen Sharing" -m "is now active - click to dismiss" -s
Potresti diventare molto fantasioso con uno script di shell per determinare l'IP di origine, la data e l'ora, registrare la connessione o fare ogni genere di cose divertenti dal momento che launchd ha un grande supporto per gli script di shell e applicazioni complete.
Uno script Apple veloce e sporco può essere utile per i test per assicurarsi che launchd funzioni e puoi sempre lucidare la presentazione in un secondo momento.
osascript -e 'tell application "System Events" to display alert "Incoming VNC session started" as warning buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel" message "Screen Sharing is now active and someone can see and control this Mac until the menu bar icon of \"binoculars inside a monitor\" turns back into binoculars alone. "'
Vedi questi link per maggiori informazioni su launchd e finestra di dialogo di AppleScript come riferimento.