Вопрос или проблема
В связи с этим вопросом я использую команду xrandr в osx для выполнения операций с моими внешними мониторами. К сожалению, похоже, что она вообще не распознает внешние мониторы:
Cobrakai$xrandr --verbose --screen 1
Недопустимый номер экрана 1 (дисплей имеет 1)
В то время как для экрана 0 (моего родного экрана) работает нормально
Cobrakai$xrandr --screen 0
xrandr: Не удалось получить размер гаммы для вывода по умолчанию
Экран 0: минимум 640 x 480, текущий 2304 x 1824, максимум 2304 x 1846
по умолчанию подключен 2304x1824+0+0 0мм x 0мм
1280x800 60.0 2.0
1152x720 60.0
1024x768 60.0
1024x640 60.0
800x600 60.0
800x500 60.0
640x480 60.0
720x480 60.0
1280x778 1.0
1280x1824 1.0
1280x1846 2.0
2304x1824 1.0*
2304x1846 2.0
Cobrakai$
Даже когда другие приложения могут распознавать, что есть много экранов (по скриншоту) – как я могу заставить xrandr распознать дополнительные экраны?
Оказывается, что по крайней мере часть проблемы в том, что утилита Xrandr предназначена только для работы с окнами X11, а не с родными экранами osx…
Ответ или решение
Проблема распознавания внешних экранов в Xrandr на macOS
Используя команду Xrandr в macOS для управления внешними мониторами, вы столкнулись с проблемой их распознавания. В вашем случае вывод команды xrandr --verbose --screen 1
возвращает сообщение об ошибке: "Invalid screen number 1 (display has 1)", что указывает на то, что утилита не распознаёт дополнительные экраны, кроме встроенного.
Причины проблемы
-
Совместимость Xrandr с macOS:
Xrandr – это инструмент, который предназначен для работы с X11, системой оконного управления, специфичной для Unix-подобных операционных систем. macOS использует свой собственный оконный менеджер и не поддерживает X11 "из коробки". Поэтому, когда вы пытаетесь использовать Xrandr для управления мониторами, это может привести к проблемам идентификации внешних экранов. -
Лимитация в конфигурации дисплеев:
В выводе командыxrandr --screen 0
видно, что имеется информация только о "default connected" дисплее с ограниченными разрешениями. Это связанно с тем, что Xrandr распознает только встроенный экран, а дополнительные внешние мониторы находятся вне контроля X11.
Альтернативы для управления дисплеями на macOS
Если ваша цель состоит в том, чтобы управлять внешними мониторами на macOS без необходимости использования Xrandr, вам следует рассмотреть другие варианты:
-
Использование системных настроек macOS:
- Откройте "Системные настройки" на вашем Mac.
- Перейдите в раздел "Мониторы". Здесь вы сможете видеть и настраивать все подключенные дисплеи.
- Используйте вкладку "Расположение", чтобы настроить порядок дисплеев и определить основной экран.
-
Команды терминала для управления дисплеями:
В macOS вы можете использовать определённые команды и скрипты для управления дисплеями. Рассмотрите использование утилитыdisplayplacer
, которая позволяет выполнять операции, аналогичные Xrandr, но полностью совместимые с macOS.Пример команды для настройки дисплеев:
displayplacer "id:<ID_Дисплея> res:1920x1080"
Убедитесь, что вы установили
displayplacer
с помощью Homebrew:brew install displayplacer
-
Использование других оконных менеджеров:
Если вы хотите использовать именно X11 и Xrandr для управления мониторами, возможно, вам стоит установить XQuartz, который является X-сервером для macOS. Однако учтите, что это может потребовать дополнительных настроек и конфигураций.
Заключение
Проблема с тем, что Xrandr не распознает внешние экраны в macOS, в значительной степени связана с ограничениями самой утилиты и особенностями системы. Я рекомендую воспользоваться системными настройками или инструментами, специально разработанными для работы с macOS, такими как displayplacer
. Это обеспечит более удобное и эффективное управление подключенными мониторами без необходимости взаимодействия с X11.