Xrandr поменять мониторы местами

Обновлено: 18.05.2024

Так, что всё это значит? А значит это вот что:

И сейчас лёгким и непринуждённым движением мы быстренько поставим на проекторе то разрешение, которое нам нужно.

Режим Clone mode
Это значит, что на внешнем мониторе \ проекторе будет отображено ТО ЖЕ САМОЕ, что и на экране ноутбука.

Чтобы сделать Clone mode на новый монитор делаем так:

Это всё позволит отдублировать изображение с экрана ноутбука на внешний монитор или проектор. А как быть, если нужно показывать два разных изображения?

Здесь указывается разрешение общего виртуального экрана в формате ШИРИНАхВЫСОТА (в данном случае 2048 на 1024). Именно такой вычтя из этого физическое разрешение вашего монитора, вы получите максимальное разрешение внешнего монитора ноутбука, которое можно установить с помощью xrandr.

Режим Dual Monitor mode
При таком режиме вывод на проектор будет отличаться от вывода на монитор ноутбука: то есть вы сможете перетаскивать окна на внешний монитор, а на ноутбучном мониторе их не будет. Это очень удобно, когда вам нужно показать вывод, скажем, латеховского документа и не пугать благородных донов видом латеховского кода.

Сделать это можно с помощью правки xorg.conf, как уже говорилось, или с помощью xrandr.

Чтобы сделать DualHead на внешний монитор с разрешением 1024х768 пишем

Ведущей будет панель ноутбука.

Горшочек не вари
Чтобы отключить всю эту светомузыку с внешним монитором, нужно дать команду:

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

Повернуть экран с помощью Xrandr

xrandr -o left

Чтобы повернуть по часовой стрелке изображение на мониторе пишем:

xrandr -o right

Чтобы вернуть всё на место, достаточно дать команду:

xrandr -o normal

И всё вернётся на свои места.


Графические утилиты для xrandr
Для того, чтобы иметь возможность всё делать через графические утилиты и не утруждать свою память разными командами, есть утилита grandr. Выглядит она не просто, а очень просто:
Собственно, она является простой обёрткой для консольной утилиты xrandr и позволяет управлять подключением внешних мониторов (вращение, размещение и прочее) без необходимости что-то набирать в консоли. Аналогичная оболочка для xrandr в KDE называется krandr.

Xrandr и работа с экраном и мониторами

  • Поворачиваем изображение по часовой стрелке :
  • Поворачиваем изображение против часовой стрелки :
  • Отражаем изображение по вертикали и горизонтали:
  • Для тех, кто интересуется команды можно комбинировать, вот так:

Включение или выключение питания любого из мониторов на результат не влияло.
Для настройки совместной работы 2-х мониторов используем связку xrandr + xfce-настройки. Практическое решение - приведено в конце текста.

1. Использование xrandr

Кроме pra02-1409fat-xfce, опыты также проводились над дистрибутивами Runtu-12.04-xfcе и Mint-17-xfcе.
Ситуация с ними оказалась аналогичной, хоть и с некоторыми нюансами, в худшую для них сторону
(в Runtu 12.04 xfcе и Mint-17 xfcе у меня не корректно производилось переключение панели с меньшего монитора на больший).

Результат проведенных экспериментов показал, что в этом вопросе использование одних xfcе-настроек не дает полного решения.
Лучший результат дает использование - xrandr + xfce-настройки.

Для начала набираем в Терминале xrandr и получаем примерно такой текст:

Из этой записи получаем:

монитор, подключенный к VGA-выходу в системе именуется как VGA-0 и имеет основное разрешение 1280×1024 с частотой развертки 60.0 (отмечено +); монитор, подключенный к DVI-выходу в системе именуется как DVI-0, считается главным (primary) и имеет меньшее, чем основное разрешение 1280×1024 с частотой развертки 60.0 (отмечено +); Рабочий стол отображается в режиме дублирования - одинаково на обоих мониторах (отмечено +0+0 - для обоих мониторов). Примечание:
такое наименование типично для видеокарт ATI, а для видеокарт других производителей наименование мониторов в системе будет немного другим.

2. Настройка 2-х и более мониторов с помощью xrandr:

выбор главного монитора (вот это у меня и не работает) - команда: дублирование (клонирование, зеркалирование) Рабочего стола на обоих мониторах (может быть полным или частичным) - команда: растягивание Рабочего стола на 2 монитора и выбор размещения мониторов - команды: В режиме дублирования экранов компьютер старается задать одинаковое разрешение экрана для обоих мониторов. Причем он ориентируется, естественно, на меньший монитор. Для изменения этой ситуации приходится задавать параметры разрешения обоих мониторов принудительно. В режиме растягивания Рабочего стола на два монитора практически (у меня всегда) главным получается левый или верхний монитор. Возможно это зависит от видеодрайверов или видеокарты.

Есть и другие возможности настройки с помощью xrandr, но для решения поставленной задачи - и этих оказалось достаточно.

Те, кто не желает использовать Терминал, могут воспользоваться программой arandr (это GUI -оболочка для xrandr), который позволяет все нижеописанные действия (и еще многие другие) выполнять в графическом режиме - просто передвигая в окне программы маленькие экранчики мышкой. Однако установка arandr в систему - выходит за рамки написания данной статьи. Может быть среди Вас найдутся желающие сделать отдельный подключаемый модуль. Размер arandr - около 0,5 Мб.
Есть еще интересная программа lxrandr, которая уже имеется в системе. Она позволяет очень удобно настраивать разрешение монитора, а также включать и отключать его. Но она не может устанавливать расположение мониторов. И поэтому, для работы с 2-мя мониторами, не очень подходит.

Теперь набираем в Терминале определенные команды и смотрим их выполнение. Оно происходит сразу, без всяких перезагрузок и каких-либо других дополнительных действий.

2.1. Изменение разрешения монитора:

Команда устанавливает на мониторе VGA-0 разрешение экрана 1280×1024. Вы не увидите результата, если на мониторе уже стоит это разрешение.

2.2. Определение монитора главным:

Команда делает монитор DVI-0 - главным. У меня это работает так - монитор может числиться главным, но все ярлычки и панель находятся на другом мониторе, который левый.

2.3. Отключение монитора:

Команда отключает монитор VGA-0 - при этом его экран гаснет и что важнее, система начинает считать его отключенным.

Оставшийся включенным монитор (DVI-0) продолжает работать и автоматически становится главным (он же единственный!). На нем слева отображаются ярлычки и внизу панель.

2.4. Установка двух мониторов по горизонтали (один рядом с другим) с расширенным на оба монитора Рабочим столом:

Команда размещает монитор VGA-0 слева от монитора DVI-0 и расширяет Рабочий стол на оба монитора.
При этом, главным монитором является левый (VGA-0) и на нем слева находятся ярлычки и внизу панель.

Аналогично, только мониторы поменяли местами.
Команда размещает монитор VGA-0 справа от монитора DVI-0 и расширяет Рабочий стол на оба монитора.
При этом, главным монитором является левый (DVI-0) и на нем слева находятся ярлычки и внизу панель.

2.5. Установка двух мониторов по вертикали (один над другим) с расширенным на оба монитора Рабочим столом:

Команда размещает монитор VGA-0 выше монитора DVI-0 и расширяет Рабочий стол на оба монитора.
При этом, главным монитором является верхний (VGA-0) и на нем слева находятся ярлычки и внизу панель.

2.6. Установка двух мониторов по вертикали с дублированием Рабочего стола

(Рабочий стол на одном мониторе дублирует Рабочий стол на другом мониторе):

Команда размещает Рабочий стол на мониторе VGA-0 и дублирует Рабочий стол на мониторе DVI-0.
При этом, на обоих мониторах слева находятся ярлычки и внизу панель. Разрешение мониторов (если оно не указано в команде в явном виде) автоматически ставится одинаковым.

2.7. Получение режима дублирования Рабочих столов, но с разным разрешением мониторов.

Для этого надо использовать другую команду:

При этом, разрешение мониторов становится разным. Рабочие столы дублируются в пределах 1280×1024.
А все, что размещено на мониторе DVI-0 за пределами 1280×1024 - не дублируется (не показывается) на другом мониторе (VGA-0).
Таким образом, монитор VGA-0 дублирует (показывает) лишь часть Рабочего стола монитора DVI-0.

3. xrandr и панель xfce

(А точнее - опять о настройке 2-х мониторов).

Кому-то всего вышеперечисленного уже достаточно для достижения своих целей.
Но мне, как оказалось, мало. Мне все же нужен главный монитор (где панель) - справа.

Из пункта 2.4. по установке 2-х мониторов по горизонтали (один рядом с другим) с расширенным на оба монитора Рабочим столом выполняем команду:

Получаем монитор VGA-0 слева от монитора DVI-0 и расширенный Рабочий стол на оба монитора. При этом, ярлычки и панель находятся на левом мониторе (VGA-0), т.е. он у нас главный.
Использование команды –primary - у меня ситуацию не меняет. А мне нужно управлять компьютером с правого монитора. Значит обязательно надо иметь на нем панель.
Так как стандартные варианты от xrandr - у меня до конца не срабатывают, то ищем обходное решение.
Идем в настройки панели: Диспетчер настроек > Панель > закладка Экран > пункт Вывод
Видим варианты настроек «Вывода»:

И о чудо - панель перемещается с левого монитора на правый! Говорили же мне - учи матчасть!

4. Итоговое практическое решение.

А также сохранение настроек и оперативное управление двумя конфигурациями мониторов.

Теперь надо заставить компьютер запомнить все эти настройки, чтобы при загрузке они ставились автоматически.
Настройки, сделанные командами xrandr - просто так не сохраняются.
В моем случае - надо создать скрипт с нужными командами xrandr и положить его в Автозагрузку (/home/live/Startup/) и сделть его исполняемым (chmod 755)

Однако, на практике я работаю в двух разных вариантах конфигурации мониторов:

вариант 2-й - включены два монитора VGA-0 и DVI-0, причем DVI-0 должен быть справа и иметь панель.

И еще мне нужна возможность оперативного переключения между этими вариантами конфигурации мониторов.
Таким образом задача сводится к получению 3-х режимов работы:

режим 1 - после загрузки - включен один монитор - DVI-0 с разрешением 1920×1200; режим 2 - включение двух мониторов VGA-0 с разрешением 1280×1024 и DVI-0 с разрешением 1920×1200, с расширением Рабочего стола на оба монитора, причем DVI-0 должен быть справа и иметь панель; режим 3 - включение одного монитора - DVI-0 с разрешением 1920×1200;

Решение:

Сначала в Geany пишем два скрипта для xrandr. Первый скрипт:

и сохраняем с именем 2-display-off (файл понадобится дважды).

и сохраняем с именем 2-display-on.

В скрипте, после строки команды, в тексте должна быть пустая строка. Если с написанием скрипта есть какие-то затруднения, то можно скопировать файл какого-нибудь скрипта из системы, переименовать его в 2-display-off или 2-display-on и затем изменить в нем текст так, как написано выше.

Затем делаем pfs-модуль с файлами, которые должны быть размещены следующим образом:

файл 2-display-off - в папке /home/live/Startup/ копия файла 2-display-on и файл 2-display-off - в папке /usr/bin/

Для этого идем в меню Разработка > Упаковка pfs–пакета и штатными средствами делаем pfs-модуль 4-conf5-2display-startup-f11-f12-pra.
Вы, конечно, можете назвать модуль иначе. Затем сделанный pfs-модуль кладем в папку /pra/modules

Файл, размещаемый в папке /home/live/Startup/ понадобится для отключения второго монитора при загрузке - режим 1. Файлы, размещаемые в папке /usr/bin/ понадобятся для управления режимами 2 и 3.

При загрузке системы происходит автозагрузка файла 2-display-off находящегося в папке /Startup/, команда, содержащаяся в нем исполняется и монитор VGA-0 отключается.
Получается - загрузка «по-умолчанию» с одним монитором DVI-0 (причем с разрешением 1920×1200).
Итак, режим 1 - сделан!

Теперь делаем оперативное переключение между режимом 2 и 3, для этого обращаемся к xfce-настройкам.

Сначала идем в: Диспетчер настроек > Клавиатура > вкладка Комбинации клавиш > Добавить .
В окне Команда выбираем в папке /usr/bin/ созданный ранее нами файл 2-display-on, нажимаем ОК и задаем этой команде клавишу F12 .
Повторяем, но теперь в окне Команда выбираем в папке /usr/bin/ созданный ранее файл 2-display-off, нажимаем ОК и задаем этой команде клавишу F11 .
Логика выбора клавиш простая - удобство для запоминания - последняя цифра обозначает количество работающих мониторов.

Далее устанавливаем размещение панели (из пункта 3 мы уже знаем - как это делать).
Для этого идем в настройки панели: Диспетчер настроек > Панель > закладка Экран > пункт Вывод
Видим варианты настроек Вывода :

И завершающий этап - сохранение настроек для работы режимов 2 и 3.
Сохранение xfce-настроек делается через создание pfs-сохраненки штатными средствами, через: Настройки > Создание файла сохраненной сесии (pfs–сохраненки)
Наконец режимы 2 и 3 - сделаны!

Перегружаемся и проверяем - что получилось:

режим 1 - после загрузки - включен один монитор - DVI-0 с разрешением 1920×1200; режим 2 - клавиша F12 - включает два монитора - VGA-0 с разрешением 1280×1024 и DVI-0 с разрешением 1920×1200, расширяет Рабочий стол на оба монитора, причем (как я и хотел) DVI-0 справа и имеет панель; режим 3 - клавиша F11 - включает один монитор - DVI-0 с разрешением 1920×1200.

Все РАБОТАЕТ!

Заключение

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

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

Есть ноутбук с VGA-выходом. Дома стоит монитор, который может 1680х1050@60Hz, а на работе 1280х1024@72Hz. По умолчанию, xorg запускался, стараясь вывести сигнал на все возможные выходы. При этом драйвер radeon искал компромисс между разными разрешениями мониторов и экрана ноутбука. И если один из них работал только в режиме 1024х768, то остальные получали такую же картинку. Поиск в Интернет подсказал использовать xrandr для настройки.

  • 01:05.0 VGA compatible controller [0300]: ATI Technologies Inc RS690M [Radeon X1200 Series] [1002:791f]
  • xorg-server-1.5.1-alt2
  • xorg-drv-radeon-6.9.0-alt3
  • графический режим запускается хотя бы на одном мониторе

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

Для начала я определил, как называются видеовыходы (обозначены полужирным шрифтом):

Затем был создан первый скрипт, который:

  1. Отключал экран ноутбука (LVDS)
  2. Переключал монитор (VGA-0) в наилучший режим

Второй скрипт, позволял переключаться обратно на экран ноутбука:

Третий, включал оба выхода ( VGA-0 и LVDS ) в режиме дублирования, при этом использовалось "минимальное общее" разрешение

TODO: Найти устройство с HDMI и попробовать выводить сигнал на него.

Для переключения видеовыходов (на ноутбуках), есть комбинация Fn+[соответствующая кнопка]. ACPId видит её как:

Потому, создаём описание события в /etc/acpi/events/[произвольное название] :

И добавляем соответствующий сценарий, который реализует циклическое переключение между LVDS->VGA->LVDS+VGA:

Размeры дисплея, экраны и шрифты

xrandr

Поддерживаемые драйверы
  • xserver-xorg-video-intel (начиная с версии 2.0)
  • xserver-xorg-video-nouveau (прочиайте о матрице особенности nouveau)
  • xserver-xorg-video-ati (начиная с версии 6.7.192)

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

Чтобы изменить разрешение экрана, введите например:

Два монитора и xrandr

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

Файл xorg.conf в том виде, в котором он существует, является модульным. Каждый модуль содержит все установки для устройства, например, монитора или мыши.

С xrandr Вы можете настроить первичный и вторичный экрана без перезапуска X-сервера (горячая замена hotplug). Приложение xrandr заменяет xinerama и mergedFB. Если xrandr 1.2 активирован, старые методы настройки xorg.conf (xinerama и mergedFB) могут не сработать.

Поддерживаемые драйверы
  • xserver-xorg-video-intel (начиная с версии 2.0)
  • xserver-xorg-video-nouveau (прочитайте о матрице особенности nouveau)
  • xserver-xorg-video-ati (начиная с версии 6.7.192)

Подготовка для использования xrandr на компьютере с двойными экранами

Заметка: Если Вы постоянно используете два монитора на компьютере, лучше введите постоянные параметры в xorg.conf .

A на лэптопах нужна динамическая настройка мониторов, и её придётся перенастраивать раз за разом, пока Вы не сохраните настройки xrandr в файле

Познакомимся с xrandr поближе

Сначала просто введите xrandr в консоли, чтобы увидеть обстановку:

Итак, мы видим только vga (читайте Добавление A для разъяснения имён). Мы видим разрешения, поддерживаемые этим монитором и (что важно для двух мониторов максимальный размер стола (в примере 2048x768).

Теперь подключите внешний монитор и опять наберите xrandr:

Теперь добавился DVI монитор, и он поддерживает разрешения от 720x400 до 1024x768 на определённой частоте.

Сценарии настройки
  • <output> это имя выхода (смотрите Добавление A)
  • <rate> частота развёртки (не обязательно)
  • <mode> разрешение экрана (не обязательно)
Изменяем разрешение первого монитора

Так как многие проекторы не поддерживают разрешения 1280x800, а только 1024x768, мы используем это в примере:

Чтобы отключить второй экран и восстановить разрешение на первом, введите:

Рабочий стол на несколько экранов

Так как карты intel GMA <=945GM/GMS не поддерживают 3d при виртуальном экране размером >2048x2048, Вы не сможете использовать столов с высоким разрешением бок о бок, максимум по 1024x768:

Чтобы выключить многоэкранный режим и вернуть разрешение первого экрана:

Второй экран можно располагать снизу и сверху от основного:

В результате получаем экран в 1280x1824 - это уже меньше, чем 2048x2048, но можно ещё и повернуть экран:

Заметка: Это работает только на специальных мониторах с возможностью разворота экрана

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