Чому мої зміни 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.

Відповіді:


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команди, до програм запуску сеансу.


Редагування файлів під /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 Будь ласка, виправте свою відповідь
happyyskeptic

3
У мене недостатньо репутації, щоб додати простий коментар, але я хотів зазначити, що файл sh повинен отримати дозвіл на виконання. ОП зазначила, що він / вона зробив це, але відповідь Тердона не включила його в кроки. Якщо він не виконується, вам доведеться перейти до командного рядка, оскільки він не буде входити (принаймні, це не було для мене). З мого боку це був простий нагляд, але про всяк випадок, коли хтось проігнорує цей крок, я хотів би повторити його тут.
Кірк Спенсер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.