Настройка двух мониторов с xrandr: расширение без / с отключенной прокруткой

11

Это не вопрос, а скорее решение проблемы с Ubuntu, с которой я столкнулся.

Настройка: с
учетом экрана ноутбука (например, «LVDS-1-0») и второго экрана (например, «DP-1»), второй экран которого является основным экраном, а монитор находится справа от основного экрана ( или влево) как расширение (см. рисунок). Первый экран всегда расширялся практически, несмотря на явные инструкции xrandr не делать этого. При вводе этого я смог избежать раздражающей прокрутки при перемещении курсора мыши вправо на основном мониторе.

xrandr --output LVDS-1-0 --off
xrandr --output DP-1 --mode 1920x1080 --primary --pos 0x0 --output LVDS-1-0 --mode 1920x1080 --pos 1920x0

После этого он просто переходит с одного монитора на другой без прокрутки экрана.

Обновить

После переключения на дискретную видеокарту (nvidia дискретна, а Intel интегрирована для моего ноутбука), необходимо изменить порядок выводов:

output_DP=$(xrandr | grep " connected" | grep DP | awk '{print $1}')
output_LVDS=$(xrandr | grep " connected" | grep LVDS | awk '{print $1}')

xrandr --output $output_LVDS --off
xrandr --output $output_LVDS --mode 1920x1080 --pos 1920x0 --output $output_DP --mode 1920x1080 --pos 0x0  --primary

Для большего удобства я сделал эти переменные более гибкими, поскольку переключение между дискретной и интегрированной видеокартами меняет обозначение устройств вывода (например, LVDS-1-0 против LVDS-1).

Расположение монитора

rocky_hiker
источник

Ответы:

6

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

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

Вот как вы могли бы это сделать:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 --panning 1920x1080 --pos 1920x0 \
  --output HDMI-0   --mode 1920x1080 --panning 1920x1080 --pos 0x0    --primary

(Добавлена ​​косая черта \для использования новой строки в команде.)

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

tl; dr: Таким образом, идея состоит в том, чтобы установить панорамирование в качестве драйвера, но вместо этого ограничить область отслеживания.

Это делается с помощью следующей команды:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 \
  --output HDMI-0   --mode 1920x1080 --panning 3840x1080+0+0/1920x1080+1920+0/0/0/0/0    --primary

«Первые четыре параметра [ panningаргумента] определяют общую область панорамирования, следующие четыре - область отслеживания указателя (по умолчанию это та же область). Последние четыре параметра задают границу и по умолчанию равны 0.» [ человек xrandr ]

Себастьян Барт
источник
Я поместил последнюю команду в сценарий оболочки, который я вызываю через клавиатуру (при переключении оборудования дисплея) и через несколько секунд после входа в систему автоматически.
Себастьян Барт,
Настройка области отслеживания также имела решающее значение в моей настройке.
krlmlr
В конце концов, ваше решение мне не помогло, но я нашел решение, оставив резолюции в покое. Команда для зеркала: xrandr --output HDMI1 --same-as Laptop1и для расширенного:xrandr --output Laptop1 --auto --output HDMI1 --auto --left-of Laptop1
Edenshaw