¿LockDown Browser puede detectar un segundo monitor en Mac? (Sí - así es cómo)
El mecanismo de detección
LDB hace dos llamadas al lanzar:
uint32_t count;
CGDisplayActiveDisplayCount(&count);
// count es el número de pantallas actualmente activas
// LDB bloquea si count >= 2 (config Dashboard predeterminada)
Esto es idéntico a lo que muestra Información del Sistema → Gráficos/Pantallas. No hay API oculta; la detección es directa.
Cosas que cuentan como "pantallas activas"
| Fuente de pantalla | ¿Contada? | Notas |
|---|---|---|
| Pantalla integrada de MacBook (tapa abierta) | ✓ | Siempre contada como #1 |
| HDMI externo | ✓ | Estándar |
| DisplayPort externo | ✓ | Estándar |
| USB-C-a-pantalla directo | ✓ | Estándar |
| Thunderbolt 4 externo | ✓ | Estándar |
| Dock USB-C con salida HDMI/DisplayPort | ✓ | Cada puerto de salida cuenta independientemente |
| Sidecar iPad | ✓ | Registrado como CGDisplay virtual |
| AirPlay a Apple TV / Vizio / Roku TV | ✓ | Espejo o extensión - ambos contados |
| Espejo de iPhone (Sequoia 15+) | ✓ | Contado en el lado Mac |
| iPad mostrado vía Continuity como fuente de entrada | ✓ cuando Sidecar activo | Sidecar es lo que lo hace contar |
Cosas que NO cuentan
| Configuración | Por qué no cuenta |
|---|---|
| Modo de tapa cerrada con solo pantalla externa | La pantalla integrada duerme; conteo CGDisplay = 1 |
| iPad junto al laptop, NO en Sidecar | Dispositivo separado, no registrado en el sistema de pantallas de macOS |
| Pantalla externa físicamente conectada pero DESHABILITADA vía Configuración del Sistema | Inactiva en macOS, así que no contada |
| Universal Control (cursor en iPad) | Universal Control != Sidecar; iPad no es un CGDisplay |
| Teléfono junto al laptop, incluso con Continuity Camera | Cámara != pantalla |
| Smart TV en el mismo cuarto, no conectada vía AirPlay/HDMI | Sin conexión al sistema de pantallas del Mac |
Casos límite
Dock USB-C que añade una pantalla "virtual" cuando nada está enchufado
Algunos docks USB-C (CalDigit, OWC) tienen una peculiaridad donde el dock anuncia un puerto de pantalla incluso cuando ningún monitor está conectado. macOS ocasionalmente registra esto como una pantalla activa sin pantalla física. Síntoma: LDB bloquea con error de multi-pantalla pero no ves nada conectado.
Solución: desenchufa el dock por completo (brevemente, para el examen). La pantalla fantasma desaparece de la lista CGDisplay.
Pantalla inalámbrica (Miracast, terceros)
Los protocolos inalámbricos de pantalla de terceros se registran como CGDisplays igual que AirPlay. Deshabilita.
Laptops de pantalla doble (raros)
Algunos laptops Asus / Acer con Windows tienen una pantalla secundaria sobre el teclado. Los Macs no tienen este hardware. No relevante.
Cómo verificar tu conteo CGDisplay
Abre Terminal y ejecuta:
system_profiler SPDisplaysDataType | grep -i "Resolution"
Cada línea es una pantalla detectada. Cuéntalas. Si >1, LDB bloqueará.
O usa AppleScript:
osascript -e 'tell application "System Events" to get count of displays of (get display preferences)'
Qué pasa si intentas eludir y lanzar
No puedes eludir - la verificación pasa al lanzar, antes de que se cargue ningún examen. El bloqueo es consistente y reproducible. Desconecta o deshabilita la segunda pantalla, reinicia LDB.
Preguntas frecuentes
Si cubro mi monitor externo con un trozo de cartón, ¿LDB aún lo detecta?
Sí - cubrir físicamente la pantalla no cambia el estado de pantalla de macOS. La pantalla está "activa" por la conexión, no porque los píxeles sean visibles. Desenchufa o deshabilita.
¿Puedo cambiar a única pantalla cambiando la disposición de macOS?
No - Configuración del Sistema → Pantallas → Disposición solo cambia layout, no el conteo de pantallas activas. Deshabilita una pantalla vía el ícono de engranaje por pantalla, o desenchufa.
La tapa de mi MacBook está cerrada y solo uso una externa. ¿Por qué LDB aún bloquea?
No debería bloquear en esa configuración si el modo de tapa cerrada está activo correctamente. Si LDB bloquea: tapa abierta → cierra la tapa completamente → espera 10 segundos → externa se vuelve la única pantalla → lanza LDB. Si sigue bloqueando, la integrada puede no estar durmiendo (cable de carga desconectado, tapa no cerrada por completo).