Поворот экрана двух мониторов не сохраняется при перезапуске (nvidia-settings)

У меня есть два монитора, установленных на моем настольном ПК под управлением Ubuntu 18.04 с видеокартой NVIDIA GTX 960. Я использую проприетарные драйверы NVIDIA.

Сначала я открываю nvidia-settings и настраиваю мониторы так, чтобы они располагались, как показано ниже.

enter image description here

Затем я создаю новый файл /etc/X11/xorg.conf с помощью кнопки «Сохранить в X Configuration». Результирующий /etc/X11/xorg.conf показан ниже.

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 410.79

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL U2414H"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 960"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "DP-4: nvidia-auto-select +1920+0 {rotation=left}, DVI-I-1: nvidia-auto-select +0+840"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

После перезагрузки правый монитор больше не поворачивается, как указано в настройках nvidia.

enter image description here

В случае необходимости левый монитор подключается через DVI-I (DVI-I-1), а правый монитор подключается через DisplayPort (DP-4).

Что я пробовал

Сначала я проверил, существует ли файл /usr/share/X11/xorg.conf , который, как мне кажется, будет иметь приоритет над / etc / X11 / xorg.conf . /usr/share/X11/xorg.conf не существует.

Затем я попытался полностью удалить /etc/X11/xorg.conf , а затем воссоздать его с помощью инструмента nvidia-settings. Такое же поведение, как и раньше.

Если я удалю файл /etc/X11/xorg.conf , то места монитора поменяются местами, что указывает на то, что конфигурация загружается, поскольку поведение отличается, когда файл xorg.conf nvidia-settings настоящее время.

(Nuclear Option) Я также попытался установить свежую копию Ubuntu 18.04 на дополнительный внутренний жесткий диск. Такое же поведение, как и раньше.

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

1
задан 9 February 2019 в 02:46

1 ответ

В вашем случае с вашими мониторами с именем DVI -I-1 и DP-4 временным решением будет установка следующей команды в качестве запускаемого приложения:

xrandr --output DP-4 --rotate right --pos 1920x0 --output DVI-I-1 --pos 0x840

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

Для тех, у кого возникла та же проблема: два монитора с одинаковым разрешением Hres x Vres, левый монитор по горизонтали, а правый по вертикали:

  1. Найдите названия своих мониторов. с:

    xrandr | grep "connected"

Теперь предположим, что они называются Mon1 и Mon2 (замените своими именами в последующих командах).

  1. Рассчитайте вертикальное положение Vpos, определяемое как расстояние между верхним краем горизонтального монитора и верхним краем вертикального монитора. Вы можете видеть ниже, что это определено таким образом, потому что начало координат находится вверху слева.Если вы знаете только вертикальный сдвиг Vshift снизу, вы можете легко вычислить Vpos следующим образом:

    Vpos = Vres - Hres - Vshift

       0                        Hres           Hres + Vres
    0                            -------------------
                                 |                 |
                                 |                 |
                                 |                 |
                                 |     Mon2        |
  Vpos    -----------------------|                 |
          |                      |  Vres x Hres    |
          |                      |                 |
          |         Mon1         |                 |
          |                      |                 |
          |     Hres x Vres      |                 |
          |                      |                 |
Vpos+Hres -----------------------|                 |
                     ^           |                 |
             Vshift  |           |                 |
  Vres               v           -------------------
  1. для «запуска» в поиске Ubuntu) с помощью приведенной ниже команды (замените mon1 и mon2 на имена ваших мониторов, Hres на разрешение вашего монитора по горизонтали и Vpos с числом, которое вы вычислили на шаге 2):

    xrandr --output mon2 --rotate right --pos Hresx0 --output mon1 --pos 0xVpos

Вы должны легко обобщать на мониторы с разным разрешением или с разной ориентацией.

3
ответ дан 18 May 2020 в 08:48

Другие вопросы по тегам:

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