O LockDown Browser pode detectar um segundo monitor no Mac? (Sim - veja como)
O mecanismo de detecção
O LDB faz duas chamadas ao lançar:
uint32_t count;
CGDisplayActiveDisplayCount(&count);
// count é o número de telas atualmente ativas
// LDB bloqueia se count >= 2 (config Dashboard padrão)
Isso é idêntico ao que Informações do Sistema → Gráficos/Telas mostra. Não há API oculta; a detecção é direta.
Coisas que contam como "telas ativas"
| Fonte de tela | Contada? | Notas |
|---|---|---|
| Tela embutida do MacBook (tampa aberta) | ✓ | Sempre contada como #1 |
| HDMI externo | ✓ | Padrão |
| DisplayPort externo | ✓ | Padrão |
| USB-C-para-tela direto | ✓ | Padrão |
| Thunderbolt 4 externo | ✓ | Padrão |
| Dock USB-C com saída HDMI/DisplayPort | ✓ | Cada porta de saída conta independentemente |
| Sidecar iPad | ✓ | Registrado como CGDisplay virtual |
| AirPlay para Apple TV / Vizio / Roku TV | ✓ | Espelhamento ou extensão - ambos contados |
| Espelhamento de iPhone (Sequoia 15+) | ✓ | Contado no lado do Mac |
| iPad mostrado via Continuity como fonte de entrada | ✓ quando Sidecar ativo | Sidecar é o que faz contar |
Coisas que NÃO contam
| Configuração | Por que não conta |
|---|---|
| Modo de tampa fechada com apenas tela externa | Tela embutida dorme; contagem CGDisplay = 1 |
| iPad ao lado do laptop, NÃO em Sidecar | Dispositivo separado, não registrado no sistema de telas do macOS |
| Tela externa fisicamente conectada mas DESABILITADA via Ajustes do Sistema | Inativa no macOS, então não contada |
| Universal Control (cursor no iPad) | Universal Control != Sidecar; iPad não é um CGDisplay |
| Telefone ao lado do laptop, mesmo com Continuity Camera | Câmera != tela |
| Smart TV no mesmo cômodo, não conectada via AirPlay/HDMI | Sem conexão ao sistema de telas do Mac |
Casos limite
Dock USB-C que adiciona uma tela "virtual" quando nada está plugado
Alguns docks USB-C (CalDigit, OWC) têm uma peculiaridade onde o dock anuncia uma porta de tela mesmo sem monitor conectado. O macOS ocasionalmente registra isso como uma tela ativa sem tela física. Sintoma: LDB bloqueia com erro multi-tela mas você não vê nada conectado.
Solução: desconecte o dock por completo (brevemente, para a prova). A tela fantasma desaparece da lista CGDisplay.
Tela sem fio (Miracast, terceiros)
Protocolos sem fio de tela de terceiros se registram como CGDisplays igual ao AirPlay. Desabilite.
Laptops de tela dupla (raros)
Alguns laptops Asus / Acer com Windows têm tela secundária acima do teclado. Macs não têm esse hardware. Não relevante.
Como verificar sua contagem CGDisplay
Abra o Terminal e execute:
system_profiler SPDisplaysDataType | grep -i "Resolution"
Cada linha é uma tela detectada. Conte-as. Se >1, o LDB bloqueará.
Ou use AppleScript:
osascript -e 'tell application "System Events" to get count of displays of (get display preferences)'
O que acontece se você tentar contornar e lançar
Você não pode contornar - a verificação acontece no lançamento, antes de qualquer prova carregar. O bloqueio é consistente e reproduzível. Desconecte ou desabilite a segunda tela, reinicie o LDB.
Perguntas frequentes
Se eu cobrir meu monitor externo com um pedaço de papelão, o LDB ainda detecta?
Sim - cobrir fisicamente a tela não muda o estado de tela do macOS. A tela está "ativa" pela conexão, não porque pixels são visíveis. Desconecte ou desabilite.
Posso mudar para tela única alterando o arranjo do macOS?
Não - Ajustes do Sistema → Telas → Arranjo só muda layout, não a contagem de telas ativas. Desabilite uma tela via o ícone de engrenagem por tela, ou desconecte.
A tampa do meu MacBook está fechada e só uso uma externa. Por que o LDB ainda bloqueia?
Não deveria bloquear nessa configuração se o modo de tampa fechada está ativo corretamente. Se o LDB bloqueia: tampa aberta → fechar a tampa completamente → aguarde 10 segundos → externa se torna única tela → lançar LDB. Se ainda bloqueando, a embutida pode não estar dormindo (cabo de carga desconectado, tampa não totalmente fechada).