Почему мои изменения в lightdm.conf не влияют на разрешение экрана моего рабочего стола?

13

Я хотел изменить разрешение экрана моего рабочего стола на 1366x768. Но мой VESA drivers(AMD REDWOOD)не обнаружил это разрешение. Поэтому я создал сценарий оболочки следующим образом:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off

Я сохранил его как lightdmxrandr.shв /usr/binи сделал его исполняемым. Затем я добавил следующие строки в /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf(что является эквивалентом общеизвестного /etc/lightdm/lightdm.conf. Я использую вышеуказанный файл, как и 14.04, где его нет /etc/lightdm/lightdm.conf.): -

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

и сохранил это. Теоретически это должно было изменить как разрешение экрана входа в систему, так и разрешение экрана рабочего стола 1366x768. Но на удивление это изменило только разрешение экрана входа в систему. Разрешение рабочего стола не изменилось. Позже я добавил скрипт в автозагрузку приложений, и это изменило разрешение моего рабочего стола.

Поэтому я хочу знать, почему изменения, внесенные в lightdm.confфайл (точнее в 50-ubuntu.confфайл), не повлияли на разрешение моего рабочего стола. Это какая-то ошибка, о которой нужно сообщать на панели запуска, или неправильно говорить, что изменения в lightdm повлияют на экран рабочего стола?

PS: - По-моему, это не просто специфично для Ubuntu 14.04.

VenkiPhy6
источник

Ответы:

11

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

  1. lightdm правильно запускает ваш скрипт
  2. Это устанавливает желаемое разрешение
  3. Unity запускает, читает свои настройки и возвращается к стандартному разрешению, которое у вас есть
  4. Ваше разрешение восходит к тому, что было раньше

Теперь это происходит из-за того, что драйвер VESA не определяет автоматически желаемое разрешение. Это означает, что когда вы изменяете разрешение в разделе «Дисплеи» настроек Unity, вы даете ему разрешение, которое недоступно, пока вы не выполните xrandrкоманды. Поэтому это игнорируется при следующем перезапуске, и Unity возвращается к стандартному разрешению.

Итак, вам нужно сделать разрешение доступным для Unity, затем установить его по умолчанию и позволить ему обрабатывать его. Для этого вы должны сначала добавить эту строку в /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf:

session-setup-script=/usr/bin/lightdmxrandr.sh

Затем убедитесь, что это /usr/bin/lightdmxrandr.shвыглядит так:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  

Обратите внимание, что я на самом деле не устанавливаю разрешение, а только делаю его доступным. После того, как вы сделали этот перезапуск, войдите в систему. Теперь новое разрешение должно быть доступно в Настройки => Дисплеи. Если это так, выберите его там, выйдите и снова войдите в систему, и разрешение должно быть установлено правильно. Теперь оно должно сохраняться при перезагрузках.


Альтернативные подходы:

  1. Создайте /etc/X11/xorg.confфайл со списком желаемого разрешения. Что-то вроде этого:

    Section "Monitor"
        Identifier    "Monitor0"
        Modeline "1368x768_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Card0"
        Monitor        "Monitor0"
        SubSection "Display"
            Modes       "1368x768_60.00"
        EndSubSection
    EndSection
    
    Section "Device"
        Identifier    "Card0"
        Driver        "vesa"
    EndSection
    
  2. Добавьте скрипт, который запускает xrandrкоманды, в приложения запуска вашего сеанса.

terdon
источник
Редактирование файлов в /usr/share/lightdm/lightdm.conf.d/ является неправильным способом изменения lightdm.conf. На странице проекта LightDM сказано, что системные администраторы могут переопределить конфигурацию по умолчанию в /etc/lightdm/lightdm.conf.d/ или /etc/lightdm/lightdm.conf. Не следует редактировать файлы в / usr / share / lightdm /, поскольку он может работать какое-то время, его могут перезаписать обновления пакета Источник: страница проекта LightDM freedesktop.org/wiki/Software/LightDM Пожалуйста, исправьте свой ответ
happyskeptic
3
У меня недостаточно репутации, чтобы добавить простой комментарий, но я хотел отметить, что файлу sh нужно дать разрешение на выполнение. ОП упомянул, что он / она сделал это, но в ответе Тердона это не было указано в шагах. Если это не исполняемый файл, вам придется перейти в командную строку, поскольку он не будет входить в систему (по крайней мере, для меня). Это был простой упущение с моей стороны, но на случай, если кто-то пропустит этот шаг, я хотел бы повторить его здесь.
Кирк Спенсер