Te parte la atención
Dos pantallas, una tarea. La mirada se te va a un panel que no tiene nada que ver con lo que estás haciendo.
App de barra de menú · macOS
Estás trabajando en un monitor externo, viendo una película en la tele o con unas gafas de VR puestas. La pantalla del portátil, ahí abajo, no aporta nada: te parte la atención, se traga tus ventanas y gasta batería. PantallaOff hace que desaparezca de verdad — no atenuada: fuera. Un clic la devuelve.
Sin cuenta. Sin telemetría. Sin acceso a la red. Cada línea está en GitHub.
↑ Es una réplica real. Pulsa el primer ítem.
El problema
Cuatro peajes pequeños que ya ni notas, y todos los paga un panel que no estás usando.
Dos pantallas, una tarea. La mirada se te va a un panel que no tiene nada que ver con lo que estás haciendo.
Las apps se abren ahí, los diálogos aparecen ahí, y el vídeo a pantalla completa se escapa ahí a media escena.
Viendo una película a oscuras, el panel de debajo del monitor es lo más luminoso que hay en el salón.
Una pantalla encendida que no miras nunca son los vatios más fáciles de ahorrar de tu vida.
Puedes — y entonces pierdes el teclado, el trackpad y Touch ID, y el Mac se queda en modo clamshell. Y si estás a media película, cerrar la tapa no es ni una opción. PantallaOff deja el portátil entero utilizable y apaga sólo el panel.
| Qué consigues | Brillo al mínimo | Cerrar la tapa | PantallaOff |
|---|---|---|---|
| El panel está apagado de verdad | No — sigue tenuemente encendido | Sí | Sí |
| Las ventanas dejan de abrirse ahí | No | Sí | Sí |
| El teclado y el trackpad siguen vivos | Sí | No | Sí |
| Touch ID sigue funcionando | Sí | No | Sí |
| Sirve a media película, con batería, donde sea | Sí | No | Sí |
| Vuelve con un clic | Sí | Sí | Sí |
Qué te llevas
Sin temporizadores, sin panel de control, sin ventana de preferencias. Cada interruptor está a un clic — y se aplican en el sitio, así que el menú se queda abierto y se re-etiqueta solo.
El primer ítem del menú. macOS pasa a comportarse como si sólo tuvieras un monitor — porque, para él, es exactamente así.
La mitad imprescindible de Amphetamine, en un interruptor. Y si quieres, mantener también la pantalla encendida para un panel o un render largo.
Sólo el interruptor: para graduarla ya están las teclas de brillo. Al encenderla te devuelve tu ajuste de brillo automático.
Opcional. Hace que cerrar la tapa duerma el Mac de verdad, aunque esté enchufado con pantalla externa, donde macOS lo mantendría despierto.
Si la interna estaba apagada al dormir o apagar el Mac, se vuelve a apagar sola — pero sólo cuando un externo utilizable lleva unos segundos estable. Activado por defecto, y se puede desactivar.
El idioma se cambia desde el menú y se aplica al instante. Abrir al iniciar sesión es un interruptor más, si te apetece.
Confianza
Así que la app entera está construida alrededor de ese fallo. Nada de lo que hay aquí abajo es una intención de diseño: todo se midió sobre hardware real, y varios de los hallazgos contradicen a la propia documentación de Apple.
Sólo tu clic. El watchdog, el manejador del despertar y todos los callbacks del sistema pueden encender pantallas — nunca apagarlas. Hay exactamente una excepción acotada, y es la que has pedido tú: volver a aplicar tu propia decisión anterior tras despertar o arrancar, por la misma transacción vigilada. Se puede desactivar.
Una pantalla desactivada desaparece del sistema: se va de la lista de pantallas de macOS
y hasta de Información del Sistema. La única forma de recuperarla es un ID que alguien
recordase antes. Por eso se escribe a disco, con fsync, antes de
apagar nada.
Se lanza fuera de la app y queda reparentado a launchd, así que sobrevive incluso a un
kill -9 de la propia PantallaOff. Importa, porque el comportamiento
documentado por macOS —«se revierte al salir la app»— se probó aquí, y con este ajuste
concreto no se revierte.
¿No hay pantalla externa utilizable, o tu interna es ahora mismo la fuente de una duplicación? El ítem del menú aparece en gris y te dice por qué. La app prefiere no hacer nada antes que dejarte sin ninguna pantalla.
El fallo que nadie había escrito
Con la pantalla interna apagada, desenchufar físicamente el monitor externo no llega a CoreGraphics. macOS sigue reportando un monitor que está encima de la mesa, desconectado. Cualquier vigilante construido sobre las APIs normales de pantallas es estructuralmente ciego a esto: no puede ver el problema. Aquí está el latido de la propia app cazándolo:
23:17:07 cg-ve: 2[ext,act] usables=1 ← cable conectado
23:17:40 cg-ve: 2[ext,act] usables=1 ← CABLE DESENCHUFADO — sin cambios
23:17:56 cg-ve: 22[ext,act] ← reconectado: ID nuevo
La solución fue dejar de preguntarle al sistema de pantallas y ponerse a escuchar a IOKit, que sí ve marcharse el cable — y actuar dentro de la ventana estrecha en la que reactivar el panel todavía funciona. Se observaron tres comportamientos distintos al desenchufar; los tres están cubiertos.
| Qué pasa al desenchufar | Lo caza | Latencia |
|---|---|---|
| El sistema re-registra el monitor con un ID nuevo | Acelerador | Instantáneo |
| El sistema procesa la retirada correctamente | Callback de reconfiguración | Instantáneo |
| El sistema se queda callado (el caso de arriba) | Vigía IOKit | ~10 s |
| Cierras la tapa o duermes el Mac | Reactivación preventiva | Antes de dormir |
~/rescue. Un binario independiente, a propósito en una ruta corta que puedes teclear a ciegas o por SSH. No hace absolutamente nada si no hay nada que rescatar.Instalación
Los tres acaban en el mismo sitio: /Applications/PantallaOff.app, y un iconito de
portátil en tu barra de menú, junto al reloj.
PantallaOff-<versión>.zip.PantallaOff.app a tu carpeta Aplicaciones.Ese aviso es honesto: la app está firmada ad-hoc, no notarizada por Apple — notarizar exige una cuenta de desarrollador de pago, y esto es un proyecto MIT gratuito. ¿Prefieres no fiarte del binario de otro? Las opciones 2 y 3 compilan la misma app, y no lo provocan.
Ir a Releasesinstall.command → Abrir → Abrir.Usa clic derecho → Abrir, no doble clic: macOS pone en cuarentena todo lo que se descarga de internet, y ésa es la forma estándar de autorizarlo una vez. Necesita las Herramientas de Línea de Comandos de Xcode — si te faltan, el instalador abre el de Apple por ti. Xcode completo no hace falta.
Descargar el proyectogit clone https://github.com/joanproductivo/PantallaOff.git
cd PantallaOff && make install
open /Applications/PantallaOff.app
Las opciones 2 y 3 te dejan además la herramienta de rescate en ~/rescue, y la
app que producen no provoca ningún aviso de Gatekeeper: la has compilado tú, así que no
lleva la marca de cuarentena.
¿Instalaste desde Releases y quieres también la ruta corta de rescate? Un comando:
cp /Applications/PantallaOff.app/Contents/MacOS/rescue ~/rescue
Preguntas
Es la pregunta alrededor de la que está diseñada la app. Ninguna ruta automática puede apagar una pantalla: sólo tu clic. El ID de la pantalla se escribe a disco antes de apagar nada, un vigilante de rescate corre en otro proceso que sobrevive a que maten la app, y un vigía IOKit caza el único caso que a macOS se le escapa. Si fallara todo a la vez, aún tienes cuatro salidas: reconectar el monitor, cerrar y abrir la tapa, ejecutar ~/rescue o reiniciar — el estado apagado nunca sobrevive a un reinicio.
No, y es deliberado. Sin una segunda pantalla utilizable, apagar la interna te dejaría sin ninguna, y con cero pantallas activas macOS no puede recuperar un panel por software. Así que el ítem del menú se pone en gris y te explica por qué.
Sí: vale cualquier cosa que macOS trate como segunda pantalla utilizable, incluida una tele por HDMI y unas gafas de VR en modo extendido. Las pantallas virtuales se midieron específicamente, porque a nivel de sistema se comportan distinto que un cable, y están cubiertas de forma nativa.
Porque la app está firmada ad-hoc en vez de notarizada por Apple, y notarizar exige una cuenta de desarrollador de pago para lo que es un proyecto MIT gratuito. Clic derecho → Abrir, o Ajustes del Sistema → Privacidad y seguridad → Abrir igualmente. Y si prefieres no fiarte del binario de un desconocido, compílala tú con un doble clic o un comando: misma app, sin aviso.
Ninguno. No hay cuenta, ni analítica, ni acceso a la red. En marcha normal ni siquiera escribe un fichero de registro: los eventos se quedan en un búfer pequeño en memoria y sólo llegan al disco si algo va mal, para poder diagnosticar después una pantalla en negro.
Sí, si quieres. Si la interna estaba apagada al dormir o apagar el Mac, PantallaOff la vuelve a apagar tras despertar o arrancar — pero sólo cuando un externo utilizable lleva unos segundos estable, dentro de una ventana corta y con las mismas comprobaciones que un clic manual. Viene activado y se puede desactivar en ⌥ → Diagnóstico.
Para lo que usa casi todo el mundo, sí: «Mantener el Mac despierto» es un interruptor, con un «…y la pantalla encendida» opcional, usando la misma API pública de aserciones de energía. Si necesitas horarios, disparadores o reglas por app, quédate con Amphetamine: esta app no tiene nada de eso, a propósito.
Apple Silicon, macOS 13 Ventura o posterior. Todo lo documentado aquí se midió en macOS 26.6; la compilación apunta a 13+ y compila limpio ahí, pero en versiones anteriores trátalo como no probado. En Intel no se ha probado nunca.
Si es la fuente de la duplicación, apagarla dejaría sin origen a todo el conjunto, así que la app se niega y te ofrece romper la duplicación primero. Ser la copia duplicada no es problema: se apaga con normalidad.
Gratis, con licencia MIT y sin versión de pago. La trampa honesta es técnica: apagar una pantalla exige una API privada de macOS, lo que implica que la app no puede estar en la App Store y que Apple podría romperla en una versión futura. Ese trato es el mismo que hacen todas las herramientas de esta categoría, y es justo por eso que el código es público.
Gratis, de código abierto, y a unos noventa segundos de tu barra de menú.
Prefer English?
Read in English