63 votos

Usar cafeína para evitar el sueño al cerrar la tapa de la batería

El nativo caffeinate la utilidad no funciona para evitar que mi macbook se duerma cuando cierro la pantalla. En su lugar, el sistema duerme y varios servicios de red ( VPN, screenshares, llamadas VOIP, clientes de mensajería, transferencias de archivos ) a fallar mientras yo caminar de mi escritorio a mi reunión en menos de 5 minutos.

Andar por ahí con la tapa del portátil medio abierta hace que sea difícil llevarlo con seguridad junto a mi café, y es claramente poco cool.

El nativo caffeinate está diseñado para manejar esto como un reemplazo fácil de usar para pmset pero parece que está diseñado para no funcionar cuando se desconecta de la corriente eléctrica.

Documentos a través de man caffeinate

-s Crear una aserción para evitar que el sistema se duerma. Esta aserción es válida sólo cuando el sistema es funcionando con corriente alterna .

Buscando una alternativa nativa a InsomniaX o nosleep .

Una función de tiempo de espera es esencial para evitar que accidentalmente meta mi macbook no muerto en una bolsa, lo que resulta en un lío caliente. ( caffeinate -t , especifica el valor del tiempo de espera en segundos )

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 como caffeinate -t 3600 ? Según mi experiencia, funciona incluso si el macbook está funcionando con batería.

57voto

aye Puntos 36

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.

10voto

Simba Puntos 254

No hay una forma nativa de hacerlo. Esto es lo que obtuve después de algunas búsquedas y pruebas:

enter image description here

Nota:

  • La extensión del kernel de Nosleep no se pudo cargar en High Sierra
  • El SPI privado NO es soportado por Apple después de High Sierra. Fermata cambió a la pmset método después de la versión 1.1
  • Es posible que tenga que desactivar Gatekeeper para dejar que Insomnio funcionan como se espera.
  • Las otras aplicaciones que he probado no funcionan con la tapa cerrada

8voto

Sudhi Puntos 116

El usuario de Github iccir ha creado una pequeña aplicación gratuita para la barra de menús llamada Fermata que hace exactamente lo que quieres: mantener el MacBook despierto con la tapa cerrada, y te permite establecer un tiempo de espera.

Acabo de probarlo en Mojave (10.14.2) y me ha funcionado de maravilla. https://github.com/iccir/Fermata

7voto

osexp2003 Puntos 271

Probado en MacOS Catalina versión 10.15.6

funciona tanto en modo batería como en modo cargador.

sudo pmset disablesleep 1

no olvide restablecer los ajustes por

sudo pmset disablesleep 0

Mi hija a menudo cierra la tapa una vez que encontró que dejé mi asiento mientras todavía estoy escuchando YouTube, este comando pmset me ayuda a seguir escuchando YouTube.

1voto

Mitchell D Puntos 596

¿Has probado esta aplicación ? Me parece muy útil exactamente para lo que buscas.

Estoy bastante seguro de que tiene una función de tiempo de espera que se establece dentro de la configuración de la aplicación.

6 votos

Gracias @mitchell-d . La pregunta es específicamente pidiendo una solución nativa, como caffeinate. Hay otras aplicaciones sugeridas en ¿hay alguna forma de hacer que un macbook no se duerma cuando se cierra la tapa? No obstante, probé el cafeína aplicación que recomiendan lo hace no evitar que mi macbook se duerma cuando cierro la tapa.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X