No es lo ideal, pero aquí hay una solución. Para evitar que el portátil se duerma cuando la tapa está cerrada y está funcionando con batería, ejecute los siguientes comandos:
sudo pmset -b sleep 0; sudo pmset -b disablesleep 1
Para volver a activar el modo de suspensión del portátil cuando la tapa está cerrada y está funcionando con batería, ejecute los siguientes comandos:
sudo pmset -b sleep 5; sudo pmset -b disablesleep 0
El "5" en el segundo conjunto de comandos representa el número de minutos antes de dormir cuando está en la batería; ajustar como se desee para su portátil.
Esto es un poco peligroso, ya que si te olvidas de volver a activar la configuración, el portátil nunca dormirá cuando esté en batería. Debido a esto, he escrito un shell script para volver a habilitar automáticamente la configuración:
#!/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
El shell script deshabilitará el sueño hasta que se pulse el botón Enter en cuyo momento se reactivará la configuración de la suspensión (alternativamente, puede pulsar Ctrl - C y conseguir lo mismo). También establecerá un tiempo de espera (por defecto 300 segundos/5 minutos) después del cual la configuración de la suspensión se volverá a activar automáticamente, y el portátil se verá obligado a ir a dormir. Mientras que esto sería una molestia si estás usando tu portátil en una reunión, será un salvavidas si te olvidas y pones tu portátil en tu bolsa para ir a casa.
Los lectores astutos notarán que estos comandos requieren sudo
pero, lamentablemente, eso es inevitable, según parece. Lo que he hecho en mi sistema es hacer que no tenga que introducir mi contraseña para ejecutar pmset
como root. Para ello, edite el archivo sudoers
archivo ( sudo visudo
) y añadir esta línea:
joe ALL=(ALL) NOPASSWD: /usr/bin/pmset
sustituyendo "joe" por tu nombre de usuario. Probablemente podrías conseguir el mismo resultado (es decir, ejecutar el script sin tener que introducir tu contraseña) ejecutando el shell script SETUID, pero no me gusta hacer eso; abrir este único comando a través de sudoers me parece menos arriesgado.
Para ejecutar el script, mételo en un directorio de tu PATH
y lo invoca como tal:
noz [<timeout in seconds>]
Cuando llegues a tu destino, simplemente pulsa Enter o Ctrl - C y ya está. Y si te olvidas de él, se reiniciará automáticamente y dormirá.
Probablemente hay una manera de lograr todo esto a través de AppleScript, de modo que usted puede asignar una tecla de acceso rápido y lo que no; Voy a tratar de que si alguna vez se cansa de ejecutar esto desde la línea de comandos.
1 votos
Me temo que no hay nativo alternativa, ya que se supone que un MacBook se pone en reposo cuando lo cierras. :-/
3 votos
Andar con el MacBook es exactamente por qué también quiero una solución para evitar el sueño cuando la tapa está cerrada.
0 votos
¿Has probado la opción
-t
comocaffeinate -t 3600
? Según mi experiencia, funciona incluso si el macbook está funcionando con batería.0 votos
Gracias por la sugerencia, no funcionó en los primeros intentos. ¿Me falta algo? Probado 1)
caffeinate -t 3600
2) Cerrar el portátil 3) Esperar 5s 4) Abrir el portátil para encontrar la pantalla de inicio de sesión y los servicios de red desconectados.0 votos
@aquí no traté de cerrar la tapa, sin embargo. Sólo ejecuté el comando con
-t
opción cuando mi macbook está con la batería, y no se fue a dormir. No he probado con la tapa cerrada, pero parece que el macbook se verá obligado a dormir en cuanto cierres la tapa. Perdón por mi malentendido. Pensaba que buscabas una forma de hacerlo funcionar cuando funciona sólo con batería, sin la tapa cerrada.