Es ist nicht ideal, aber hier ist eine Lösung. Führen Sie die folgenden Befehle aus, um zu verhindern, dass der Laptop bei geschlossenem Deckel und Akkubetrieb in den Ruhezustand wechselt:
sudo pmset -b sleep 0; sudo pmset -b disablesleep 1
Führen Sie die folgenden Befehle aus, um den Ruhezustand des Laptops bei geschlossenem Deckel und Akkubetrieb wieder zu aktivieren:
sudo pmset -b sleep 5; sudo pmset -b disablesleep 0
Die "5" im zweiten Befehlssatz gibt die Anzahl der Minuten vor dem Einschlafen im Akkubetrieb an. Passen Sie die Einstellungen für Ihren Laptop an.
Dies ist etwas gefährlich, da der Laptop im Akkubetrieb niemals in den Ruhezustand versetzt wird, wenn Sie vergessen, die Einstellungen erneut zu aktivieren. Aus diesem Grund habe ich ein Shell-Skript geschrieben, um die Einstellungen automatisch wieder zu aktivieren:
#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************
#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds
#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}
function prevent_sleep() {
echo
echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."
sudo pmset -b disablesleep 1
sudo pmset -b sleep 0
}
function enable_sleep() {
# $1: <enter> = 0, timeout = 1, Ctrl-C = undef
#----- insert a newline for timeout or Ctrl-C -----
if [[ ${1:-1} -eq 1 ]]; then echo; fi
echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"
sudo pmset -b disablesleep 0
sudo pmset -b sleep $BATTERY_SLEEP
#----- sleep on timeout only -----
if [[ ${1:--1} -eq 1 ]]; then sudo pmset sleepnow; fi
exit
}
#***** prevent it from sleeping *****
prevent_sleep
#***** trap Ctrl-C *****
trap enable_sleep INT
#***** wait for an enter *****
read -t $timeout_len
rc=$?
#***** re-enable normal sleep *****
enable_sleep $rc
Das Shell-Skript deaktiviert den Energiesparmodus, bis Sie die EnterTaste drücken. An diesem Punkt werden die Energiesparmodus-Einstellungen wieder aktiviert (alternativ können Sie auch drücken Ctrl- Cund dasselbe erreichen). Außerdem wird eine Zeitüberschreitung festgelegt (standardmäßig 300 Sekunden / 5 Minuten), nach deren Ablauf die Einstellungen für den Ruhezustand automatisch wieder aktiviert werden und der Laptop gezwungen wird, in den Ruhezustand zu wechseln. Wenn Sie Ihren Laptop in einer Besprechung verwenden, ist dies zwar schmerzhaft, aber es ist lebensrettend, wenn Sie vergessen haben, Ihren Laptop nach Hause mitzunehmen, und ihn in Ihre Tasche stecken.
Erfahrene Leser werden feststellen, dass diese Befehle erforderlich sind sudo
. Leider ist das unvermeidlich, AFAIK. Was ich auf meinem System getan habe, ist, es so zu machen, dass ich mein Passwort nicht eingeben muss, um pmset
als root zu laufen . Bearbeiten Sie dazu die sudoers
Datei ( sudo visudo
) und fügen Sie diese Zeile hinzu:
joe ALL=(ALL) NOPASSWD: /usr/bin/pmset
Ersetzen Sie "Joe" durch Ihren Benutzernamen. Sie könnten wahrscheinlich dasselbe Ergebnis erzielen (dh das Skript ausführen, ohne dass Sie Ihr Kennwort eingeben müssen), indem Sie das Shell-Skript SETUID ausführen, aber das gefällt mir nicht. Das Öffnen dieses einen Befehls über Sudoer scheint mir weniger riskant zu sein.
Um das Skript auszuführen, kleben Sie es in ein Verzeichnis auf Ihrem PATH
Computer und rufen es als solches auf:
noz [<timeout in seconds>]
Wenn Sie dort ankommen, wo Sie hin wollen, drücken Sie einfach Enteroder Ctrl- Cund schon können Sie loslegen. Und wenn Sie es vergessen, wird es automatisch zurückgesetzt und in den Ruhezustand versetzt.
Es gibt wahrscheinlich eine Möglichkeit, dies alles über AppleScript zu erreichen, sodass Sie ihm einen Hotkey zuweisen können und was nicht. Ich werde es versuchen, wenn ich es jemals müde werde, dies von der Kommandozeile aus auszuführen.