LockDown Browser は Mac で 2 枚目のモニターを検出できるか? (はい、その仕組み)

はい。LockDown Browser は Core Graphics 経由で macOS に登録されたすべてのディスプレイを検出します。これには内蔵スクリーン、HDMI / DisplayPort / USB-C 経由で接続された外部モニター、Sidecar の iPad、AirPlay の TV、さらには一部のドックの仮想ディスプレイも含まれます。以下では、正確な検出ロジック、何が数えられ、何がすり抜けるかをご紹介します。

検出の仕組み

LDB は起動時に 2 つの呼び出しを行います。

uint32_t count;
CGDisplayActiveDisplayCount(&count);
// count is the number of currently-active displays
// LDB blocks if count >= 2 (default Dashboard config)

これは システム情報 → グラフィックス / ディスプレイ が表示する内容と同じです。隠し API はなく、検出は単純明快です。

「アクティブなディスプレイ」として数えられるもの

ディスプレイソース数えられるか備考
MacBook 内蔵ディスプレイ (ふた開き)常に #1 として数えられる
HDMI 外部標準
DisplayPort 外部標準
USB-C からディスプレイへ直結標準
Thunderbolt 4 外部標準
HDMI / DisplayPort 出力付きの USB-C ドック各出力ポートが独立して数えられる
Sidecar の iPad仮想 CGDisplay として登録される
Apple TV / Vizio / Roku TV への AirPlayミラーリングまたは拡張、どちらも数えられる
iPhone ミラーリング (Sequoia 15+)Mac 側で数えられる
Continuity で入力ソースとして表示された iPad✓ Sidecar 有効時Sidecar が数えられる原因になる

数えられないもの

構成数えられない理由
クラムシェルモードで外部ディスプレイのみ内蔵ディスプレイがスリープ、CGDisplay 数 = 1
ノート PC の隣に iPad があるが Sidecar ではない別デバイスで macOS のディスプレイシステムに登録されていない
外部ディスプレイが物理的に接続されているがシステム設定で無効化macOS 内で非アクティブのため数えられない
Universal Control (カーソルが iPad 上に)Universal Control は Sidecar ではない。iPad は CGDisplay ではない
ノート PC の隣に電話、Continuity Camera 利用時もカメラはディスプレイではない
同じ部屋にスマート TV、AirPlay / HDMI で接続なしMac のディスプレイシステムに接続なし

端ケース

何も接続されていないのに「仮想」ディスプレイを追加する USB-C ドック

一部の USB-C ドック (CalDigit、OWC) は、モニターが接続されていなくてもドックがディスプレイポートをアドバタイズする癖があります。macOS はこれを物理スクリーンのないアクティブなディスプレイとしてまれに登録します。症状: 何も接続されていないように見えるのに、LDB がマルチディスプレイエラーでブロックします。

解決方法: ドック全体を取り外してください (試験のあいだだけで構いません)。ファントムディスプレイが CGDisplay リストから消えます。

ワイヤレスディスプレイ (Miracast、サードパーティ)

サードパーティのワイヤレスディスプレイプロトコルは AirPlay と同様に CGDisplay として登録されます。無効化してください。

ツインディスプレイのノート PC (まれ)

一部の Asus / Acer の Windows ノート PC はキーボードの上に副スクリーンを備えています。Mac にはこのハードウェアはありません。関係しません。

CGDisplay 数の確認方法

ターミナルを開いて次を実行してください。

system_profiler SPDisplaysDataType | grep -i "Resolution"

各行が 1 つの検出されたディスプレイです。数えてください。>1 なら LDB はブロックします。

または AppleScript を使います。

osascript -e 'tell application "System Events" to get count of displays of (get display preferences)'

バイパスして起動を試みた場合の挙動

バイパスはできません。チェックは起動時、試験が読み込まれる前に行われます。ブロックは一貫しており再現可能です。2 枚目のディスプレイを切断するか無効化し、LDB を再起動してください。

Frequently asked questions

外部モニターを段ボールで覆ったら、LDB はそれでも検出しますか?

はい。物理的にスクリーンを覆っても macOS のディスプレイ状態は変わりません。ディスプレイは接続によって「アクティブ」なのであって、ピクセルが見えているからではありません。抜くか無効化してください。

macOS の配置を変更して単一ディスプレイに切り替えできますか?

いいえ。システム設定 → ディスプレイ → 配置 はレイアウトのみを変更し、アクティブなディスプレイの数は変更しません。ディスプレイごとの歯車アイコンでディスプレイを無効化するか、抜いてください。

MacBook のふたを閉じて外部のみを使っていますが、なぜ LDB はまだブロックしますか?

クラムシェルモードが正しく有効になっていれば、その構成ではブロックしないはずです。ブロックされる場合: ふた開き → ふたを完全に閉じる → 10 秒待つ → 外部が唯一のディスプレイになる → LDB を起動。それでもブロックされる場合、内蔵がスリープしていない可能性があります (充電ケーブルが切断されている、ふたが完全に閉じていないなど)。