هل يكتشف LockDown Browser شاشة ثانية على Mac؟ (نعم - وإليك كيف)
آلية الكشف
يُجري LDB استدعاءين عند الإطلاق:
uint32_t count;
CGDisplayActiveDisplayCount(&count);
// count is the number of currently-active displays
// LDB blocks if count >= 2 (default Dashboard config)
هذا مطابق لما تعرضه معلومات النظام ← الرسومات/الشاشات. لا توجد واجهة مخفية؛ الكشف بسيط.
ما يُحسَب «شاشات نشطة»
| مصدر الشاشة | محسوب؟ | ملاحظات |
|---|---|---|
| شاشة MacBook المدمجة (الغطاء مفتوح) | ✓ | تُحسَب دائماً رقم 1 |
| HDMI خارجية | ✓ | قياسية |
| DisplayPort خارجية | ✓ | قياسية |
| USB-C إلى شاشة مباشرة | ✓ | قياسية |
| Thunderbolt 4 خارجية | ✓ | قياسية |
| USB-C dock مع منفذ خرج HDMI/DisplayPort | ✓ | كل منفذ خرج يُحسَب على حدة |
| iPad في Sidecar | ✓ | مسجَّل CGDisplay افتراضي |
| AirPlay إلى Apple TV / Vizio / Roku TV | ✓ | عكس أو توسيع - كلاهما يُحسَب |
| iPhone Mirroring (Sequoia 15+) | ✓ | يُحسَب على جانب Mac |
| iPad مَعروض عبر Continuity كمصدر إدخال | ✓ عند تفعيل Sidecar | Sidecar هو ما يجعله يُحسَب |
أشياء لا تُحسَب
| الإعداد | لماذا لا يُحسَب |
|---|---|
| وضع الغطاء المغلق مع شاشة خارجية فقط | الشاشة المدمجة تنام؛ عدد CGDisplay = 1 |
| iPad بجانب الحاسوب المحمول، وليس في Sidecar | جهاز منفصل، غير مسجَّل في نظام شاشات macOS |
| شاشة خارجية موصولة لكن مُعطَّلة عبر إعدادات النظام | غير نشطة في macOS، فلا تُحسَب |
| Universal Control (المؤشِّر على iPad) | Universal Control ≠ Sidecar؛ iPad ليس CGDisplay |
| هاتف بجوار الحاسوب المحمول، حتى مع Continuity Camera | كاميرا ≠ شاشة |
| TV ذكي في الغرفة نفسها، غير موصول عبر AirPlay/HDMI | لا اتصال بنظام شاشات Mac |
حالات استثنائية
USB-C dock يُضيف شاشة «افتراضية» عندما لا شيء موصول
لبعض وصلات USB-C dock (CalDigit، OWC) خصوصية تعلن فيها الـ dock عن منفذ شاشة حتى عندما لا تكون شاشة موصولة. يُسجِّل macOS أحياناً هذا شاشة نشطة دون شاشة فعلية. الأعراض: يحظر LDB بخطأ تعدُّد الشاشات لكنك لا ترى شيئاً موصولاً.
الحل: افصل الـ dock كلياً (مؤقتاً للامتحان). تختفي الشاشة الوهمية من قائمة CGDisplay.
الشاشة اللاسلكية (Miracast، طرف ثالث)
تُسجَّل بروتوكولات الشاشة اللاسلكية من طرف ثالث في CGDisplay كما يفعل AirPlay. عطِّلها.
الحواسيب المحمولة بشاشتين توأمين (نادر)
لبعض حواسيب Asus / Acer التي تعمل بـ Windows شاشة ثانوية فوق لوحة المفاتيح. ليس لدى Mac هذا العتاد. ليس ذا صلة.
كيف تتحقَّق من عدد CGDisplay لديك
افتح Terminal وشغِّل:
system_profiler SPDisplaysDataType | grep -i "Resolution"
كل سطر هو شاشة مكتشَفة. عُدَّها. إذا كانت >1، فسيحظر LDB.
أو استخدم AppleScript:
osascript -e 'tell application "System Events" to get count of displays of (get display preferences)'
ماذا يحدث إن حاولت تجاوز الفحص والإطلاق
لا يمكنك التجاوز؛ يحدث الفحص عند الإطلاق، قبل تحميل أي امتحان. الحظر متَّسق وقابل للاستنساخ. افصل الشاشة الثانية أو عطِّلها، ثم أعد تشغيل LDB.
Frequently asked questions
إن غطَّيت شاشتي الخارجية بقطعة كرتون، هل يكتشفها LDB رغم ذلك؟
نعم؛ تغطية الشاشة مادياً لا تغيِّر حالة الشاشة في macOS. الشاشة «نشطة» بسبب الاتصال، لا لأن البكسلات مرئية. افصلها أو عطِّلها.
هل يمكنني التحويل إلى شاشة واحدة بتغيير ترتيب macOS؟
لا؛ إعدادات النظام ← الشاشات ← الترتيب تغيِّر التخطيط فقط، لا عدد الشاشات النشطة. عطِّل شاشة عبر أيقونة الترس الخاصة بكل شاشة، أو افصلها.
غطاء MacBook لديَّ مغلق وأستخدم شاشة خارجية فقط. لماذا يحظر LDB رغم ذلك؟
ينبغي ألا يحظر في تلك التهيئة إذا كان وضع الغطاء المغلق نشطاً بشكل سليم. إن حظر LDB: افتح الغطاء ← أغلقه تماماً ← انتظر 10 ثوانٍ ← تصبح الخارجية الشاشة الوحيدة ← أطلق LDB. إن استمر الحظر، فقد لا تكون المدمجة نائمة (الشاحن مفصول، الغطاء غير مغلق تماماً).