Skip to content

Latest commit

 

History

History
166 lines (123 loc) · 10.4 KB

File metadata and controls

166 lines (123 loc) · 10.4 KB

English  ·  简体中文  ·  Español  ·  日本語  ·  Français  ·  Deutsch

Sleepless: keep your Mac awake with the lid closed

Mantén tu MacBook despierto con la tapa cerrada, con batería y sin pantalla externa.
Un interruptor en la barra de menús, con temporizador de apagado automático y corte por nivel mínimo de batería para que nunca la agotes del todo.

CI Release Downloads Stars License: MIT Platform: macOS 26, Apple Silicon

Build provenance: attested (SLSA) Checksums: SHA-256 Telemetry: none Install: Homebrew cask

Sleepless demo: flip the switch, set an auto-off timer, drag the battery-floor slider

Note

Cerrar la tapa pone tu Mac a dormir, y las apps basadas en caffeinate (KeepingYouAwake y similares) no pueden evitarlo, por diseño. Sleepless activa el único ajuste que sí puede, pmset disablesleep, con redes de seguridad para que sea seguro olvidarse de él.

Instalación

brew install --cask aboudjem/tap/sleepless
/Applications/Sleepless.app/Contents/Resources/grant.sh   # one-time passwordless grant
Otras formas
Descargar Coge la última versión, descomprímela en /Applications y apruébala en Ajustes del Sistema → Privacidad y seguridad → Abrir igualmente (está firmada de forma ad-hoc).
Compilar desde el código git clone https://github.com/Aboudjem/Sleepless.git && cd Sleepless && ./install.sh (sin aviso de Gatekeeper).

Luego haz clic en la taza de la barra de menús, activa el interruptor y cierra la tapa.

Características

Un solo interruptor Haz clic en la taza de la barra de menús y activa el conmutador.
⏲️ Temporizador de apagado 1 h o 2 h con cuenta atrás en vivo, y luego se apaga.
🔋 Nivel mínimo de batería Apagado automático al 5–50 % con batería (15 % por defecto).
🪫 Low Power Mode Se hace a un lado cuando LPM está activado, con batería.
🖥️ Sin adaptador Tapa cerrada, con batería. Sin monitor, sin enchufe HDMI.
🚀 Iniciar al iniciar sesión Opcional, desactivado por defecto, siempre arranca apagado.
🪶 Diminuto y nativo Un archivo de AppKit. Sin icono en el Dock, daemon ni kext.

Glifo de la barra de menús: taza vacía = apagado · taza llena = despierto · taza llena con punto = despierto con batería (apagado automático en vivo).

Sleepless frente a las alternativas

Sleepless Amphetamine KeepingYouAwake caffeinate
Despierto, tapa cerrada, sin monitor ✅ ¹ ⚠️ ² ❌ ³
Con batería ✅ lid open ⚠️
Temporizador de apagado
Apagado automático con batería baja
Código abierto ✅ MIT ❌ App Store ✅ MIT Apple
Coste Gratis Gratis Gratis Gratis

A fecha de 2026-06. ¹ Usa pmset disablesleep y vuelve a leer el indicador; el comportamiento depende del hardware y la versión de macOS. ² Documenta el modo de pantalla cerrada pero se reporta ampliamente que falla en Apple Silicon al cambiar la fuente de alimentación (AE #28); la app es de código cerrado. ³ No puede hacer tapa cerrada por diseño, envuelve caffeinate (#66). ⁴ caffeinate -i funciona con batería; -s es solo con corriente.

Úsalo para

  • 🤖 Terminar trabajos nocturnos con la tapa cerrada: ejecuciones de agentes, compilaciones, renders, entrenamiento de ML.
  • 📡 Compartir tu punto de acceso desde la mochila.
  • ⬇️ Dejar en marcha descargas, subidas o copias de seguridad grandes.
  • 🖥️ Mantener accesible un servidor local o una sesión SSH.

Tip

Fija un nivel mínimo de batería en el que confíes (digamos 20 %) más un temporizador, y podrás alejarte sin tener que vigilar la batería.

Cómo funciona

Sleepless activa pmset disablesleep (el indicador SleepDisabled del kernel), vuelve a leerlo para que la barra de menús nunca mienta, y lo revierte en tu nivel mínimo de batería, en Low Power Mode, cuando el temporizador termina o al reiniciar. Una app gráfica no puede escribir una contraseña, así que el instalador añade una regla de sudoers de alcance reducido para exactamente dos comandos:

<you> ALL=(root) NOPASSWD: /usr/bin/pmset -a disablesleep 0, /usr/bin/pmset -a disablesleep 1
  • No se puede ampliar. sudoers coincide con los argumentos de forma literal, sin comodines.
  • Nada que secuestrar. Sin daemon, sin script auxiliar, sin shell. Llama directamente a /usr/bin/pmset.
  • Siempre reversible. Un reinicio, el nivel mínimo, el temporizador o ./uninstall.sh (que demuestra que el permiso ha desaparecido).

Verifica una descarga, sin necesidad de cuenta de Apple:

shasum -a 256 -c SHA256SUMS
gh attestation verify Sleepless-*.zip -R Aboudjem/Sleepless

El modelo de amenazas completo, el veredicto sobre la App Store y la guía de auditoría: SECURITY.md · docs/AUDIT.md.

Preguntas frecuentes

¿sigue funcionando pmset disablesleep en Apple Silicon (M1/M2/M3)?

Sí. pmset -a disablesleep 1 activa el indicador SleepDisabled del kernel en Apple Silicon, confirmado de primera mano en macOS 26.3, lo que mantiene el Mac despierto con la tapa cerrada y con batería. Verifícalo con pmset -g | grep SleepDisabled (debería leerse 1). Las afirmaciones de que "dejó de funcionar" suelen describir caffeinate o apps basadas en caffeinate, un mecanismo distinto.

¿por qué mi Mac se duerme al cerrar la tapa incluso con Amphetamine o KeepingYouAwake?

Esas usan aserciones de energía de macOS, que detienen el temporizador de inactividad pero no pueden anular el disparador por hardware del cierre de la tapa. KeepingYouAwake envuelve caffeinate, que no puede hacer tapa cerrada (#66). pmset disablesleep, que es lo que usa Sleepless, sí puede.

¿es seguro? ¿se sobrecalentará o agotará la batería?

Es seguro para trabajo ligero y sin supervisión (descargas, sincronizaciones, un punto de acceso). Una carga sostenida y pesada con la tapa totalmente cerrada reduce el flujo de aire, así que usa el sentido común. El nivel mínimo de batería, el apagado automático en Low Power Mode y el temporizador lo detienen todos antes de que agote el Mac.

¿necesita sudo, una extensión de kernel o un daemon?

Un único permiso sudo de alcance reducido (dos comandos pmset exactos) para que una app gráfica pueda cambiar el ajuste sin un aviso. Sin extensión de kernel, sin daemon. Toda la app es un único archivo de AppKit.

¿cómo lo detengo o lo elimino?

Desactiva el interruptor, o deja que el temporizador o el nivel mínimo de batería lo hagan, y el sueño normal vuelve. Un reinicio también lo restablece. ./uninstall.sh elimina la app, el elemento de inicio de sesión y el permiso de sudoers, y luego demuestra que el permiso ha desaparecido.

¿por qué no está notarizada?

Es una herramienta personal de código abierto sin un Apple Developer ID de pago, así que está firmada de forma ad-hoc. Compila desde el código fuente para saltarte Gatekeeper, o usa Abrir igualmente para la app precompilada. Los pasos de notarización están documentados en docs/AUDIT.md.

Cómo contribuir

Se agradecen issues y PRs, especialmente traducciones e informes desde otro hardware. Consulta CONTRIBUTING.md y el Código de Conducta. Sleepless se mantiene deliberadamente pequeño.

Licencia

MIT © 2026 Adam Boudjemaa.

Si Sleepless te ahorró un viaje al Terminal, una ⭐ ayuda a que otras personas lo encuentren.