Как подключить второй монитор на линукс

Обновлено: 05.07.2024

Вы подключаете внешний монитор к вашему ноутбуку или второй монитор к настольному компьютеру. В лучшем случае ничего не происходит. В худшем случае происходит что-то ужасное. Узнайте, как получить эту возможность независимо от того, хотите ли вы клонировать экран или расширить его на несколько мониторов.

Ноутбуки дают нам возможность получить мобильность, но обычно за счет компромиссов в сравнении с более полным набором функций настольного компьютера. Наиболее очевидным компромиссом является размер экрана. Обычно экран ноутбука существенно меньше в сравнении с экраном, которым вы, вероятно, пользуетесь сидя за столом, но настроив ноутбук для использования внешнего монитора, вы можете воспользоваться преимуществами как мобильной, так и настольной системы.

Но использование нескольких экранов не ограничивается только ноутбуками. Если вы каждый день проводите часы перед компьютером, то второй или даже третий монитор может помочь вам работать более эффективно.

Все, что нужно для того, чтобы добавить второй монитор, это использовать дополнительную видеокарту или видеокарту с несколькими выходами и немного сконфигурировать Xorg.

Пытаемся разобраться с конфигурационным файлом Xorg

Независимо от того, какие способы вы будете использовать для настройки ваших дисплеев, вам потребуется внести изменения в конфигурационный файл Xorg, расположенный в /etc/X11/xorg.conf, поэтому вам не мешает ознакомиться с его структурой и с тем, что в нем используется.

В xorg.conf представлен ряд разделов, в каждом из которых определяется конкретная часть конфигурации X. Различные элементы, такие как видео-карты, экраны и устройства ввода определяются независимо друг от друга, а затем в конце файла постепенно связываются друг с другом. В конфигурационном файле Xorg есть много дополнительных разделов, но те, что перечислены ниже, наиболее важны при использовании нескольких дисплеев.

Раздел устройств "Device"

Устройством является видеокарта или видеоадаптер, так что вам потребуется по одному разделу Device (Устройство) для каждой карты вашей системы. Видеокарта с несколькими выходами считается одним устройством, но для нее требуется два раздела Device , в которых будут указаны различные выходы. В состав каждого раздела Device входит, как минимум, запись Identifier (Идентификатор) и запись Driver (Драйвер), но если у вас установлено более одной видеокарты, вам нужно добавить значение BusID (Идентификатор шины) для того, чтобы Xorg знал, какой раздел связан с каждой картой; если у вас есть карта с несколькими выходами, то добавьте значение Screen , чтобы Xorg также знал, какой раздел связан с каждым выходом. Используйте команду lspci -X и определите BusID для каждой карты в формате, подходящем для записи в файл xorg.conf:

Если у вас имеется одно устройство с несколькими выходами, нумеруйте записи экранов Screen начиная с 0. Вы также должны дать каждому параметру Identifier уникальное имя (в данном примере, мы просто добавили в конце 0 или 1):

Раздел мониторов "Monitor"

Вам необходимы по одному разделу Monitor для каждого монитора, подключенного к компьютеру. Задайте для каждого из них уникальное смысловое значение Identifier :

Раздел экранов "Screen"

В терминологии X экран представляет собой комбинацию устройства и монитора. В разделах Screen указываются значения Device и Monitor , представляющие собой ссылки по названию на соответствующие разделы:

Раздел "ServerLayout", определяющий расположение мониторов

Раздел ServerLayout , в свою очередь, является разделом, где указывается комбинация одного или большего числа разделов Screen , а также разделов InputDevice , в которых определяются клавиатуры, мыши и трекпады. Совсем скоро вы увидите несколько примеров раздела ServerLayout .

Отслеживаем ошибки в X

Как только вы начинаете изменять конфигурационный файл Xorg, возникает весьма высокая вероятность того, что, в конечном итоге, ваш компьютер перейдет в состояние, в котором X-ы вообще не смогут стартовать. Первое место, куда следует заглянуть за информацией для отладки, является журнал Xorg, который заново генерируется каждый раз, когда запускается X, и который хранится в файле /var/log/Xorg.<0>>.log или аналогичном. <0> является идентификатором, который используется Xorg для определения сеансов X; если вы запустили несколько сеансов X, у вас, возможно, также будет файл Xorg.1.log.

В журнале Xorg в начале каждой строки также добавляется ключ серьезности проблемы, благодаря чему можно очень легко увидеть именно то, что вызвало проблему. Строки, помеченные как ( II ), являются исключительно информационными, строки, помеченные как ( WW ), содержат нефатальные предупреждения, а строки, помеченные как ( EE ), указывают фатальные ошибки. Проблемы часто проходят по всему журналу сверху вниз каскадом, поскольку одна ошибка может быть причиной возникновения следующей ошибки, так, например, проблема с инициализацией видеокарты приводит к неспособности инициализации экрана.

Настраиваем функцию Xinerama

В X есть встроенная поддержка использования нескольких мониторов, но по умолчанию, каждый из них считается совершенно независимым от других. Когда используется несколько независимых мониторов, невозможно размещать окна сразу на нескольких экранах, перетаскивать окна с одного экрана на другой или переводить курсор с одного экрана на другой, перемещая его за край экрана. На самом деле для каждого монитора создается совершенно отдельная среда.

Функция Xinerama является функцией X, которая позволит преодолеть это ограничение, объединяя между собой несколько экранов так, чтобы они представляли собой единый "виртуальный экран". Вы можете определить положение экранов относительно друг к другу и компьютер будет знать, где каждый экран физически расположен по отношению к другим; это позволит перетаскивать окна через все экраны с учетом их перекрытия и расстановки мониторов на вашем письменном столе.

Во-первых, убедитесь, что в Xorg есть функция Xinerama, которую, если она отсутствует, можно включить добавив соответствующий раздел ServerFlags :

Затем добавьте разделы для второго устройства, монитора и экрана так, как это описано выше, задавая им подходящие имена. Наконец, добавьте второй экран в раздел ServerLayout , указав его положение относительно основного экрана. Вот пример с двумя экранами:

Выйдите из GNOME, нажмите клавиши Ctrl-Alt-Пробел для того, чтобы остановить Xorg и затем заставить его снова начать работать, и наблюдайте за тем, как оба монитора включаются в работу.

Конфигурируем TwinView для карт nVidia

В картах Nvidia, имеющих несколько выходов, поддерживается специальный видеорежим, называемый TwinView, который используется в проприетарных (двоичных) драйверах. TwinView немного похож на Xinerama, поскольку он связывает вместе несколько мониторов в один виртуальный дисплей, но разница в том, что это делается на очень низком уровне в видео-драйверах и аппаратных средствах. Оба монитора используют один и тот же фреймбуфер, в результате чего Xorg считает, что у вас только один монитор, в результате чего достигается лучшая производительность в сравнении с использованием функции Xinerama, а также появляется возможность использовать OpenGL на обоих мониторах на максимальной скорости. Что касается Xorg, то он управляет только одним экраном: просто оказывается, что экран имеет очень странные размеры.

После того как Xorg будет успешно работать с одним монитором и двоичными драйверами, выполните команду sudo nvidia-xconfig -twinview для того, чтобы изменить ваш файл xorg.conf и включить поддержку TwinView. Если вы хотите что-либо еще настроить (или посмотреть, что было сделано), откройте файл /etc/X11/xorg.conf и перейти к разделу Device для вашей карты NVidia. Вместо того, чтобы определять второй монитор отдельно, драйвер nVidia позволяет использовать целый ряд дополнительных параметров для включения режима TwinView и непосредственной настройки монитора:

Параметр MetaModes сообщит драйверу о том, какое разрешение будет использоваться в обоих мониторах, которое затем будет передано в Xorg как сумма размеров; в данном случае можно указать несколько вариантов разрешения; поскольку мониторы расположены один рядом с другим ( RightOf ), эффективное разрешение будет 2560x1024 или 2048x768.

Вы также можете явно указать смещение экранов друг относительно друга с тем, чтобы точно управлять логическим положением экранов:

Другими возможными значениями параметра TwinViewOrientation являются LeftOf (Слева от), Above (Сверху), Below (Снизу) и Clone (Клон). Режим Clone это особый режим, в котором на оба монитора выводится одно и то же изображение, что идеально подходит для запуска презентаций на ноутбуке, к которому подключен внешний проектор.

Конфигурируем MergedFB для карт ATI/Radeon

Новые видеокарты ATI поддерживают режим в Xorg, который называется MergedFB и который очень похож на режим TwinView для карт nVidia тем, что здесь подключение второго монитора также осуществляется непосредственно в драйвере и создается впечатление, что используется один большой виртуальный монитор:

Точно также, как и в TwinView, есть параметры, с помощью которых задаются частота, положение и разрешение второго монитора.

Комбинированные способы

Иногда недостаточно даже двух мониторов, но, к сожалению, видеокарты с более чем двумя выходами довольно редки, так что вам может понадобиться объединить методы, если вы хотите запустить три или более мониторов. Например, у вас может быть видеокарта NVidia с двумя выходами, работающая в режиме TwinView с двумя мониторами, а также третий монитор, который подключен к более старой видеокарте PCI. Поскольку TwinView выглядит для X как единый виртуальный экран, вы можете, приложив совсем немного усилий, объединить его с третьим монитором с помощью функции Xinerama и получить систему с тремя мониторами.

Немного творчества и на одной и той же машине можно даже объединить все способы подключения TwinView, MergedFB и Xinerama (рис. 5-6).

Подключение двух мониторов в openSUSE 11.3 (KDE 4.4)

Два подключенных монитора распознаются автоматически.
Проблема только в их оптимальных настройках.
По умолчанию изображения мониторов были клонированы, а толку в этом немного. Изменить настройки мониторов можно в утилите Меню -> Applications -> Configure Desktop -> Computer Administration -> Display -> Size & Orientation. Там можно задать разрешение и частоту обновления каждого монитора, а также их взаимное расположение.

Все настраивается просто и понятно, но, как оказалось, при перезапуске системы все настройки сбрасываются. Судя по форумам, это баг KDE и он будет исправлен в версии 4.6. Чтобы уже сейчас не настраивать мониторы при каждом включении компьютера нужно идти на ухищрения.

Как и в графической утилите Configure Desktop, мониторы можно настраивать из консоли с помощью утилиты xrandr. Если набрать xrandr в консоли, то будут показаны названия мониторов и список режимов каждого монитора. Несколькими вызовами xrandr можно задать нужные параметры каждого монитора. Подобрав подходящие параметры, можно записать их в какой-нибудь скрипт автозапуска. Подходящим является файл /etc/X11/xdm/XSetup. Вот только строки нужно добавлять не в конец, т.к. до конца файла выполнение может и не дойти. В этом файле уже есть кое-какие операции с Xrandr - в то же место можно вставить и наши строки. Мне подошли такие:

Первая строка выбирает автоматические параметры для VGA-монитора; строки со второй по четвертую выбирают автоматические параметры для DVI-монитора и назначают его основным; пятая строка указывает, что VGA-монитор должен располагаться слева от DVI.

После перезагрузки почти все свойства мониторов оказались такими, как нужно. Только частота обновления DVI-монитора была 60 Гц вместо возможных 75. Добавление к xrandr ключа --refresh не помогло. Нужную частоту задать получилось только с помощью специального режима. Сначала нужно уведомить xrandr о том, что существует режим 1280x1024 с частотой 75 Гц. Для этого нужно указать xrandr специальную строку. Сгенерировать эту строку можно с помощью команды cvt:

В параметрах указываются желаемая ширина, высота и частота обновления. Эта команда показывает следующую строку:

Всю строку после слова Modeline нужно указать утилите xrandr:

Теперь нужно указать, для какого монитора добавлен режим:

И для использования этого режима нужно выполнить команду:

Добавив три последних вызова xrandr в тот же скрипт XSetup, я получил то, что нужно. Причем действия с режимами нужно сделать уже после остальных действий xrandr (в частности после установки ключей --preferred и --primary), иначе частота обновления не изменится.

Возникла у меня необходимость подключить в Ubuntu 11.04 второй монитор (к видеокарте производства Nvidia). Как оказалось, при активированной оболочке Unity это действо связано с некоторыми сложностями. В этой статье я расскажу о том, как мне удалось использовать эти сложности себе на пользу и успешно настроить работу второго монитора (превратить его в своеобразный медиа-центр), не переходя при этом на классический Gnome 2 (то есть оставаясь на Unity).

Подключение второго монитора или телевизора в Unity (Ubuntu 11.04/11.10)

Те же советы должны подойти и при подключении телевизора в качестве второго монитора, а также при подключении внешнего монитора к ноутбуку. И та же инструкция подходит для Ubuntu 11.10.

Итак, ниже привожу пошаговую инструкцию по настройке. Я везде говорю «второй монитор», однако при необходимости это словосочетание можно смело менять на «телевизор», инструкции будут те же.

Подключение монитора или телевизора

Вполне логично, что первое действие, которое нужно сделать — это физически подключить монитор (или телевизор) к вашей видеокарте. Естественно, на видеокарте должны присутствовать необходимые для этого разъемы. В моем случае это видеокарта Nvidia GF 8600GT, на которой присутствует два разъема — аналоговый (VGA) и цифровой (DVI).
К каждому из этих разъемов я и подсоединил по монитору.

Подключение монитора или телевизора

Выбор режима работы второго монитора

Надеюсь, проприетарные драйвера от Nvidia у вас уже установлены?
Если нет — первым делом установите их. Если да — откройте «NVIDIA X Server Settings» и активируйте второй монитор. После этого нужно выбрать режим работы второго монитора.

В режиме «TwinView» второй монитор становится продолжением первого, то есть рабочий стол увеличивается на размер второго монитора. Этот режим вполне сносно работает из коробки, и дополнительно настраивать его (даже в Unity) не нужно. Однако меня этот режим не устраивает по многим причинам. Например, если один человек работает на первом мониторе, а второй в это время смотрит фильм на втором, то при переключении на другой рабочий стол картинка меняется и на том мониторе, на котором смотрят фильм, что неприемлемо.

Другое дело — режим «Separate X screen». В этом режиме производится эмуляция запуска второго X-сервера. Знатоки утверждают, что реально вторые X-сы не стартуют, но это уже технические подробности, знать которые нам сейчас не обязательно. Итак, выбираем режим «Separate X screen» и сохраняем конфигурацию нажатием на кнопку «Save to X Configuration File». После этого появится диалог, где нам предложат ввести пароль админа и перезаписать файл «/etc/X11/xorg.conf». Перезаписываем.

Настройки Nvidia, режим Separate X screen

Перезагружаемся и видим странную картину — на первом дисплее загружена оболочка Unity, а вот на втором — голые X-ы. В этом можно убедиться, подвигав мышкой и перекинув курсор на второй дисплей — он превратится в крестик. Такой вот баг наблюдается, но немного поразмыслив, я решил, что его можно использовать в свою пользу.

Запуск на втором мониторе оконного менеджера

Запустить на втором мониторе еще одну Unity — задача нетривиальная. Но если мы хотим превратить его в подобие мультимедиа-центра, то нам это и не нужно. А вот запустить там оконный менеджер все же не помешает, иначе могут возникнуть сложности на следующих шагах.

У нас есть выбор как минимум из двух оконных менеджеров — «Compiz» и «Metacity». Я выбрал Metacity, поскольку, во-первых, Compiz иногда ведет себя неадекватно, а во-вторых — Metacity гораздо легче, а эффекты Компиза нам все равно не понадобятся.

Запустить Metacity на втором мониторе очень просто, для этого достаточно выполнить в консоли команду:

Кстати говоря, той же командой можно запустить на втором дисплее любую программу, заменив metacity на соответствующую команду.

Убедиться в том, что Metacity действительно запустился, можно по курсору, который теперь превратится из ужасного крестика в элегантную стрелочку 🙂
Мало того, теперь на втором мониторе мы даже можем переключаться между рабочими столами, используя для этого соответствующие комбинации клавиш.

Теперь нам нужно добавить вышеприведенную команду в автозагрузку, но записать ее в чистом виде не получится, поэтому в любом текстовом редакторе создадим простенький bash-скрипт следующего содержания:

Сохраните этот файл под любым именем в любом месте на диске, после чего сделайте его исполняемым и пропишите в автозагрузку при помощи системного диалога «Автоматически запускаемые приложения».

Настройка переключения между мониторами посредством клавиатуры

Переключение между мониторами мышкой является не самым удобным — легко потерять курсор из вида, случайно увести его на другой монитор. Поэтому я предлагаю настроить переключение между мониторами с клавиатуры.

Но прежде отключим переключение мышью. Для этого я открыл под рутом в текстовом редакторе файл /etc/X11/xorg.conf и добавил к координатам второго монитора сотню пикселей, чтобы разделить мониторы между собой.

Вот пример соответствующей секции из моего xorg.conf:

Если теперь перезагрузиться, то мы увидим, что добраться курсором мыши до второго монитора уже нельзя. Как же на него переключаться? В этом нам поможет утилита Switchscreen. Скачайте и распакуйте ее. После этого перейдите в консоли в каталог «switchscreen-0.1.1» (командой cd) и выполните последовательно следующие три команды:

Утилита установлена, и следующее, что нужно сделать — это назначить клавиатурную комбинацию для переключения между столами. Для этого откройте системный диалог «Комбинации клавиш клавиатуры», нажмите на кнопку «Добавить», в поле «Название» впишите «Переключение между экранами», а в поле «команда» — /usr/local/bin/togglescreen.sh . После этого назначьте удобную для вас комбинацию клавиш (у меня это Ctrl + Super + Enter ).
Понажимайте эту комбинацию, и если вы все сделали правильно, то при этом вы будете переключаться между дисплеями.

Настройка переключения между мониторами посредством клавиатуры

Выбор медиа-центра для отображения на втором экране

Я могу порекомендовать как минимум два медиа-центра для Linux, которые обладают широчайшим функционалом — позволяют просматривать видео, изображения, слушать музыку, причем не только с диска, но и используя интернет-сервисы. Также они изобилуют дополнительными мелкими функциями, например отображают погоду в вашем городе. Речь идет о XBMC (update: теперь он называется Kodi) и Boxee.

Какой из этих двух медиа-центров выбрать — дело ваше, могу только сказать, что XMBC немного проще и лучше русифицирован, а Boxee больше ориентирован на различные социальные фишки, и требует для полноценной работы регистрации на сервисе и в некоторых сопутствующих сервисах.

В конце концов, если ничего кроме просмотра видео вам не нужно, вы можете выводить на втором мониторе не навороченный медиа-центр, а любой проигрыватель, например VLC или SMPlayer.

Взял я поиграться второй монитор. Он жутко старый, всего 15 дюймов, процарапанный и с искажёнными цветами. Но дали на халяву и он ЖК (ибо элт даже бесплатно никому не надо). Решил протестировать, как отреагируют на него мои системы. Полезность от статьи будет не большая, ибо в ней просто небольшой обзор, без решения конкретных проблем.

Сразу же второй монитор стал зеркальным основному, а расширение на обоих стало довольно унылое (15 дюймов всё же). Мне второй монитор нужен для расширения видимого рабочего пространства, так что зеркалка мне не надо.

Сделать, что бы второй монитор был продолжением первого оказалось легко: Системные параметры > Экраны.


Кстати, принтскрин делает скриншот сразу двух мониторов

Что мне понравилось в mint, так это то, что он смог определить, что монитор с большим расширением является основным и именно на нём находятся все основные элементы управления.

В целом мне очень понравилось, как mint Отреагировал на второй монитор. Он запоминает положение окон при закрытие/сворачивании; при переключение на второй виртуальный стол, доп. монитор остаётся статичным; значки на рабочем столе не зависимы от монитора. И в целом работается приятно.

Затем я решил глянуть, как обстоит дело в ubuntu. Начало было точно такое же, как и в mint (то же было зеркальное отображение). Однако, я так и не смог заставить ubuntu поверить, что мой основной монитор самсунг. Тот монитор, который левее и выше, тот и будет главным, с точки зрения ubuntu.

Установка припроетарных драйверов для ati ситуацию не улучшили, возможно с nvidia будет иначе. Думаю всё основная проблема в юнити панели. Возможно это возможно, как-то решить через конфиг, но, как писалось выше, это просто маленькая обзорная статья.

Кстати, в качестве второго монитора можно подключать не только сами мониторы, но также телевизоры и даже планшеты. В последнее время всё более популярными становятся китайские планшеты. Да, они обычно менее мощные, чем фирменные, зато они стоят в разы дешевле. А иногда они даже удобнее. Например, можно найти хорошего китайца с двойной батарейкой, который будет работать более 10 часов в режиме напряжённой работы, чего не сможет сделать ни один фирменный планшет.

Читайте также: