Gnome 3.26 не будет уважать monitors.xml

1419
Naatan

Я использую Gnome-Shell 3.26 на Arch с 3 мониторами (подключен через мини-дисплей к 3-х хабам HDMI). Эта настройка оборудования работала нормально с более ранними версиями программного обеспечения.

Проблема, с которой я сталкиваюсь, заключается в том, что Gnome-Shell просто не будет уважать мой monitors.xml, я могу заставить его сгенерировать новый monitors.xml, просто изменив конфигурацию моего дисплея через интерфейс настроек gnome, но как только я перезапущу gnome shell (alt-f2: r) полностью сбрасывает конфигурацию дисплея.

Это мой monitors.xml:

<monitors version="2"> <configuration> <logicalmonitor> <x>3840</x> <y>0</y> <scale>1</scale> <monitor> <monitorspec> <connector>DP-1-2</connector> <vendor>ACI</vendor> <product>ASUS VS228</product> <serial>C7LMQS146415</serial> </monitorspec> <mode> <width>1920</width> <height>1080</height> <rate>60</rate> </mode> </monitor> </logicalmonitor> <logicalmonitor> <x>1920</x> <y>0</y> <scale>1</scale> <primary>yes</primary> <monitor> <monitorspec> <connector>DP-1-1-2</connector> <vendor>ACI</vendor> <product>VX279</product> <serial>ECLMRS015424</serial> </monitorspec> <mode> <width>1920</width> <height>1080</height> <rate>60</rate> </mode> </monitor> </logicalmonitor> <logicalmonitor> <x>0</x> <y>0</y> <scale>1</scale> <monitor> <monitorspec> <connector>DP-1-1-1</connector> <vendor>ACI</vendor> <product>ASUS VS228</product> <serial>C9LMTF180907</serial> </monitorspec> <mode> <width>1920</width> <height>1080</height> <rate>60</rate> </mode> </monitor> </logicalmonitor> <disabled> <monitorspec> <connector>eDP-1</connector> <vendor>SDC</vendor> <product>0x424a</product> <serial>0x00000000</serial> </monitorspec> </disabled> </configuration> </monitors> 

Это вывод xrandr -q | grep " connected"

eDP-1 connected (normal left inverted right x axis y axis) DP-1-1-1 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 476mm x 268mm DP-1-1-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 598mm x 336mm DP-1-2 connected 1920x1080+3840+0 (normal left inverted right x axis y axis) 476mm x 268mm 

Почему мой monitors.xml не соблюдается? Может ли что-то переопределить это?

1

1 ответ на вопрос

1
Konrad Höffner

Это расширение оболочки GNOME должно решить эту проблему: https://extensions.gnome.org/extension/1066/fix-multi-monitors/

В случае, если установка не работает, вы также можете подписаться на http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost, который предлагает удалить ваш monitors.xml файл и пусть GNOME воссоздает его.

В случае, если это также не работает (мой случай в Arch Linux после энергосбережения), установите xorg-xrandr, запросите ваши дисплеи через xrandrи выполните следующее:

xrandr --output <CON1> --pos 0x0 --output <CON2> --pos 1920x0 --output <CON3> --pos 3840x0 

Откуда xrandr, например, имя соединения DVI-0или DisplayPort-0, я не знаю, работают ли также ваши идентификаторы monitor.xml(DP-1-2 и т. Д.) Или они одинаковые.

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

/ USR / местные / SBIN / обновление-монитор-позиции

#!/bin/bash # ------------------------------------------------- # Get monitors configuration from monitor.xml and apply it for current user session. # In case of multiple definitions in monitor.xml only first one is used. # # See http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost # for instructions # # Parameters : # $1 : waiting time in sec. before forcing configuration (optional) # # Revision history : # 19/04/2014, V1.0 - Creation by N. Bernaerts # 10/07/2014, V1.1 - Wait 5 seconds for X to fully initialize # 01/09/2014, V1.2 - Correct NULL file bug (thanks to Ivan Harmady) and handle rotation # 07/10/2014, V1.3 - Add monitors size and rate handling (idea from jescalante) # 08/10/2014, V1.4 - Handle primary display parameter # 08/12/2014, V1.5 - Waiting time in seconds becomes a parameter # -------------------------------------------------  # monitor.xml path MONITOR_XML="$HOME/.config/monitors.xml"  # get number of declared monitors NUM=$(xmllint --xpath 'count(//monitors/configuration['1']/output)' $MONITOR_XML)  # loop thru declared monitors to create the command line parameters for (( i=1; i<=$NUM; i++)); do # get attributes of current monitor (name and x & y positions) NAME=$(xmllint --xpath 'string(//monitors/configuration['1']/output['$i']/@name)' $MONITOR_XML 2>/dev/null) POS_X=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/x/text()' $MONITOR_XML 2>/dev/null) POS_Y=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/y/text()' $MONITOR_XML 2>/dev/null) ROTATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rotation/text()' $MONITOR_XML 2>/dev/null) WIDTH=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/width/text()' $MONITOR_XML 2>/dev/null) HEIGHT=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/height/text()' $MONITOR_XML 2>/dev/null) RATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rate/text()' $MONITOR_XML 2>/dev/null) PRIMARY=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/primary/text()' $MONITOR_XML 2>/dev/null)  # if position is defined for current monitor, add its position and orientation to command line parameters [ -n "$POS_X" ] && PARAM_ARR=("$" "--output" "$NAME" "--pos" "$x$" "--fbmm" "$x$" "--rate" "$RATE" "--rotate" "$ROTATE")  # if monitor is defined as primary, adds it to command line parameters [ "$PRIMARY" = "yes" ] && PARAM_ARR=("$" "--primary") done  # if needed, wait for some seconds (for X to finish initialisation) [ -n "$1" ] && sleep $1  # position all monitors xrandr "$" 

/usr/share/applications/update-monitor-position.desktop

[Desktop Entry] Type=Application Exec=update-monitor-position Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name[en_US]=Update Monitors Position Name=Update Monitors Position Comment[en_US]=Force monitors position from monitor.xml Comment=Force monitors position from monitor.xml Icon=display 

А затем выполните update-monitor-position.desktop в настройках запуска приложений .

Существует также другое руководство по адресу http://www.calgorithms.com/blog/2014/07/30/fixing-multiple-monitor-position-in-ubuntu-gnome-14-dot-04/ .

Похожие вопросы