MacBook Air / Pro: esegui lo script alla chiusura del coperchio?

4

Come si può configurare MacOS (10.8 o superiore) in modo automatico e chiamare immediatamente uno script designato dall'utente (probabilmente uno script bash) sull'utente che chiude il coperchio dello schermo di un MacBook Air o Pro?

Dettagli.

Voglio farlo perché in alcuni scenari il mio MacBook Air 2013 in esecuzione 10.8.5 non dorme immediatamente / blocca lo schermo alla chiusura del coperchio (probabilmente perché un client VPN sta tentando di aprire una connessione). Pertanto, voglio che il sistema esegua immediatamente uno script che chiama questa procedura di salvataggio e blocco dello schermo su coperchio chiuso. Tuttavia, non so come chiamare gli script alla chiusura del display-cover.

    
posta Johnny Utahh 07.10.2013 - 03:39
fonte

3 risposte

4

Non sembra che un programma possa essere avvisato quando il coperchio è chiuso. Tuttavia, lo stato del coperchio può essere monitorato periodicamente (e in questo caso particolare, ogni secondo) e le azioni eseguite in base allo stato del coperchio.

Non conosco alcun programma in grado di fornire una soluzione completa per le tue esigenze, ma puoi utilizzare le seguenti informazioni per creare una soluzione da solo.

  1. Scarica questo clamshellstate.pl script perl
  2. Puoi eseguirlo in Terminal (sotto /Applications/Utilities ) come:

    ./clamshellstate.pl 1  
    

    per ottenere un'uscita come "Aperto" o "Chiuso" che indica lo stato attuale del coperchio

  3. Crea uno script di shell come (sostituisci script-to-run con uno script di shell che desideri eseguire):

    ./clamshellstate.pl 1 | grep Closed > /dev/null && *script-to-run*
    
  4. Configura questo script per eseguirlo una volta al secondo utilizzando launchd .plist. Oppure usa Lingon per configurare facilmente launchd.plist.

Nota: invece di clamshellstate.pl, puoi anche utilizzare il seguente comando in Terminal :

ioreg -r -k AppleClamshellState | grep '"AppleClamshellState" = Yes' | cut -f2 -d"="

per ottenere un "Sì" per lo stato chiuso e un "No" per lo stato aperto.

    
risposta data 07.10.2013 - 17:20
fonte
2

Puoi anche provare a utilizzare SleepWatcher . Vedi il readme per le istruzioni:

1. Install the SleepWatcher software:

$ sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8

2. Read the man page and think about the features of SleepWatcher you want to use:

$ man sleepwatcher

3. Write small shell scripts that perform the actions you want to trigger by SleepWacher and test them.

4. Test your scripts in combination with SleepWatcher, started in the foreground in a Terminal window, e. g.:

$ /usr/local/sbin/sleepwatcher --verbose --sleep /path/to/your/sleepscript --wakeup /path/to/your/wakeupscript ...

5. Put your SleepWatcher command line into a launchd agent configuration file. As an example you can use one of the plists from ~/Desktop/sleepwatcher_2.2/config. For more information about launchd and its configuration, see the man pages for launchd and launchd.plist and http://developer.apple.com/macosx/launchd.html.

6. Copy your launchd agent configuration to /Library/LaunchDaemons or ~/Library/LaunchAgents, depending on whether you need a system wide daemon or a user agent.

7. Load the launchd agent configuration using launchctl (see examples above and the launchctl man page).

    
risposta data 25.10.2013 - 17:10
fonte
1

Potresti provare a utilizzare l'app ControlPlane che può agire su vari cambiamenti di stato sul tuo Mac, incluso se il coperchio è chiuso o meno.

    
risposta data 24.10.2013 - 11:03
fonte

Leggi altre domande sui tag