macOS 10.15+ обеспечивает NSScreen.localizedName, которое предоставляет имя для экрана, отображаемое пользователем, такое как «Встроенный дисплей Retina» или «Встроенный дисплей Retina» (если местный язык - русский) .
NSScreen.localizedName
Однако мне нужно поддерживать macOS старше 10.15, и неясно, каким должен быть запасной вариант.
Я вижу этот вопрос: «Как получить отображаемое имя с отображаемым идентификатором в Ma c OS X?» . Однако, все ответы используют CGDisplayIOServicePort, который недоступен в macOS> 10.9.
CGDisplayIOServicePort
Я также вижу этот вопрос, "CGDisplayIOServicePort устарел в OS X> = 10.9, как заменить? ". Однако все ответы зависят от GLFW , огромной библиотеки, которую я явно не хочу включать, просто чтобы получить отображаемое имя.
(РЕДАКТИРОВАТЬ) Я также нашел эту прокладку , «получить отображаемое имя из NSScreen» , но оно не работает должным образом - например, мой «Встроенный дисплей Retina» получает нечетное имя «Цветной ЖК-дисплей» и не находит io_service_t для экрана iPad моего Sidecar.
io_service_t
Фактическое имя экрана - «Цветной ЖК-дисплей», но удобное для пользователя localizedName (и то, что System Prefs показывает в более старых версиях ОС) имеет дополнительную проверку для определения того, что это внутренний дисплей ноутбука.