Як можна зробити налаштування xrandr постійним?


65

Я редагував сценарій запуску для GDM (/ etc / gdm / Init / Default), щоб назавжди змінити роздільну здатність дисплея.

Як я можу це зробити з LigthDM в Ubuntu Oneiric?


додати до .xprofile у домашній папці. Дивіться у askubuntu.com/questions/63863/… про базовий посібник із встановлення роздільної здатності та додавання до .xprofile
duffydack

Відповіді:


21

Я думаю, ви можете додати режими відображення до /etc/X11/xorg.conf.

Якщо у вас немає xorg.conf, ви можете використовувати наступне як основу. Вам необхідно замінити елементи з іменами Modeline, Driverі Modesз правильними записами для вашої системи. Залежно від обладнання, вам можуть знадобитися додаткові записи, наприклад, якщо у вашій системі є кілька графічних чіпів.

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

Якщо ви не знаєте імені відео-драйвера, який використовує ваша система, ви можете отримати ім’я наступним чином (якщо у вас є графічна мікросхема Intel, ім'я драйвера просто "intel"):

lshw -class display | grep "driver"

Моделі можна генерувати за допомогою cvt:

cvt <h-resolution> <v-resolution> [refresh]

Я спробував це, і це чомусь не завантажиться. Я використав моделін, сформований з cvtкоманди та драйвер з іншого (і спробував vesaтеж), але він просто завис без повідомлень про помилки. Рішення Джона Робертса працювало для мене ідеально і не залежить від речей, таких як драйвер відеокарти, який ви тут згадуєте, який легко може піти не так для новачків, тому я голосую за його відповідь.
Майк

1
Мабуть, це не допомагає такій речі, як --rotate.
Jherico

2
Ця відповідь застаріла. Дивіться відповідь Джона Робертса
con-f-use

+1 Ідеально-о! Використовуючи GDM w / Gnome 3.16, і це дозволило моєму GDm розпізнавати 1080p монітори. Дякую!
eduncan911

На моєму комп’ютері lshwвиведіть i915, однак правильний драйвер intel.
користувач202729

63

Змініть, /etc/lightdm/lightdm.confщоб додати наступні параметри:

display-setup-script> викликає ваш mycustomloginvideo.sh до появи екрана входу

session-setup-script> викликає ваш mycustomdesktopvideo.sh до початку сеансу роботи на робочому столі користувача

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

Можливо, інструмент gui "arandr" генерує вищезгаданий сценарій sh, вибираючи параметри з конфігурації X поточного сеансу.

Переконайтеся, що ваш скрипт оболонки виконується:

chmod a+x /usr/share/mycustom*video.sh

і ви можете перевірити, що він працює (тобто, що у вашій команді xrandr немає помилок друку чи конфігурації), просто запустивши його в терміналі:

/usr/share/mycustomdesktopvideo.sh

Якщо скрипт входу з будь-якої причини не працює, ваша машина може не завершити процес завантаження на екран входу. Якщо скрипт на робочому столі виходить з ладу, ви не зможете отримати робочий стіл після входу в систему. Якщо ви встановлюєте зовнішній монітор, ці сценарії вийдуть з ладу, коли ви відключите його, і X сеанс не розпочнеться.


Для монетного двору 13 XFCE з використанням mdm відредагуйте / etc / mdm / Init / Default. Зателефонуйте до свого сценарію до "виходу 0"
StackUnder

Evnn працює над Fedora ... потрібен був лише display-setup-scriptскрипт, оскільки Xfce вже встановив налаштування дисплея, тому session-setup-scriptщойно скинув мене на екран входу.
Вільф

10

Хтось розмістив інше рішення, хоча мушу сказати, що це не працювало для мене. Можливо, це могло б працювати для вас. У моєму випадку це порушує єдність, і я можу переміщувати лише курсор миші. Верхня панель індикатора додатка виглядає порожньою, але після відключення рідкокристалічного екрана я зміг видалити додані рядки і все повернулося до норми.

відредагуйте файл /usr/sbin/lightdm-session

Ось як виглядає перша частина цього файлу зараз:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

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

# Load resources

Зверніть увагу, що параметри Xrandr слід змінити відповідно до ваших.


Це рішення чудово працювало для lubuntu 17.x на старій машині. Це впливає лише на сеанс, тому екран з входом з екраном не відображається з потрібною роздільною здатністю.
лаконбас

6

Я вже деякий час намагаюся вирішити подібну проблему і знайшов рішення, яке працює для мене, тому, сподіваюся, це допоможе ...

У мене є стареньке прагнення AOA110, що я занадто багато разів ламав екран, і після покупки нового ноутбука вирішив, що спробую перетворити його на HTPC, але зовнішній дисплей у мене X не розпізнається, тому мені довелося 'налаштувати' його багато разів, щоб змусити його працювати з правильною роздільною здатністю.

Ось що я зробив:

Після використання цього http://ubuntuforums.org/showthread.php?t=1112186 підручника до кроку 5 я зміг знайти робочу та прийнятну роздільну здатність у xrandr, але це не працювало на екрані входу в LightDM.

Не виконайте кроків, щоб зробити його наполегливим у зазначеному вище, як це може працювати, але я думаю, що це правильний спосіб зробити це в 11.10. Я знайшов цей пост на ArchWiki https://wiki.archlinux.org/index.php/Xorg, який я адаптував до моїх потреб.

Спочатку створіть файл тут: /etc/X11/xorg.conf.d/10-monitor.conf

Потім додайте відповідні реквізити X для вашого відображення ось як виглядало моє:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

Важливі біти, які потрібно додати, під відповідними Section "Monitor"включають відповідні, Modelineякі ви знайшли під час використання, gtf 1440 900 60.00а потім під відповідними, Section "Screen"включаючи правильні Modes.

Ви помітите, що те, що я намагався зробити, було не тільки встановити підключення VGA1 до відповідної роздільної здатності, але й сказати йому не використовувати мій вихід LVDS1. Очевидно, вам потрібно буде налаштувати ваш відповідний вміст, щоб відповідати потрібній кількості виходів і правильному розділу пристроїв, екрана та дисплея для вашої установки.

Вибачте за епічний пост, я вже деякий час налаштовую файли xorg.conf за допомогою дисплея Hannspree, який я використовую, та старих налаштувань xorg.conf, які я використовував до 11.10, просто більше не працюють належним чином. Це Єдине рішення, яке я знайшов, працює.

Щасти!


Використання xrandr -qповинно давати вам правильну інформацію про те, який дисплей використовується та можливі режими.
віра на тертя

Основний конфігураційний файл може бути створений з допомогою бігу Xorg :1 -configure, що робить новий сервер X і генерує конфігураційний файл з нього - це може бути скопійований з /root/xorg.conf.newв /etc/X11/xorg.conf. Я знайшов кращий спосіб відповіді вище
Вільф

5

У мене була аналогічна проблема з моїм ноутбуком, як вище, і я хотів щось додати до розмови. Якщо ви не переймаєтесь роздільною здатністю входу (я не хочу), але хочете, щоб фактична робоча область була правильною роздільною здатністю, ви можете додати інформацію про монітор до LightDM, але не включати повну роздільну здатність, поки ви не ввійдете в систему.

Щойно я додав у файл наступний сценарій для монітора: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

то я закликаю це /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

Після входу в систему я можу налаштувати монітор у програмі "Дисплеї", і він працює, навіть після того, як я повторно увійшов (використовувався для отримання великої потворної помилки).


Це спрацювало за бажанням, але довелося перезавантажуватись, щоб не переходити знову ...
CrandellWS

4

Як доповнення до відповіді Джона Робертса, дозвольте мені зазначити, що arandr не включає в свою генерацію скриптів всі параметри, що працюють в поточному сеансі. Наприклад, основний монітор (якщо ви використовуєте подвійну конфігурацію монітора), частота оновлення та гамма-параметри для кожного монітора не включаються, наприклад. Мій сценарій сеансу виглядає так:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

Я вручну додав параметри --rate і --primary в перший рядок, а потім додав вручну другий рядок з корекцією гамми, тому що, очевидно, параметри гами xrandr втрачаються кожного разу, коли ви перемикаєте монітор на основний .

Я не знаю, чи призначена ця конкретна поведінка з налаштуваннями гами при створенні монітора первинним або це помилка.

Більше того, скрипт оболонки сеансу викликається не lightdm, а як програма для запуску, тому що, здається, lightdm викликає скрипт, перш ніж все буде готове до xrandr, і дивні речі трапляться.


4

У мене виникла проблема, що потрібно розширити дисплей у моєму новому вікні LXDE (не подвійний клон), знайшов правильну команду, але не зміг зробити її постійною.

xrandr --output VGA-0 --right-of DVI-0

Вищезазначені методи видалися занадто важкими / не правильним способом це зробити.

Зрештою я виявив це: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

Це працювало частуванням, але я використовував gedit:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

Потім додали рядок наприкінці із символом @ на початку:

@xrandr --output VGA-0 --right-of DVI-0

Сподіваюся, що це допомагає і дякую соку судо.

PS Зверніть увагу на подвійне -в команді xrandr --(не відображалось занадто чітко на моєму екрані).


2

Створіть новий документ і назвіть його, наприклад, /home/yourusername/yourscriptname.sh Введіть

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

і збережіть його у своїй домашній папці (для цього встановлено роздільну здатність 1600x900)

Відкрийте програми запуску (або запустіть gnome-session-properties) та натисніть "ДОБАВИТИ". У командному рядку введіть ім’я та тип:

bash /home/yourusername/yourscriptname.sh

Збережіть це, і тепер сценарій буде запущено зараз при кожному вході в систему, тому для початку набуття чинності потрібно спочатку вийти з системи. Запуск команди (наприклад bash /home/yourusername/yourscriptname.sh) в терміналі також буде хорошою ідеєю перевірити, чи працює сценарій.


Це було відредаговано (замість того, якщо його видалено) ОП цієї відповіді, оскільки воно було розміщено тут, а не тут - я відновив оригінальне форматування, оскільки це може бути корисним, оскільки він повинен відновити конфігурацію xrandr при вході - вміст bash-скрипта повинен ймовірно, буде замінено командами xrandr, які використовуються для отримання потрібної конфігурації.
Вільф

У моєму дисплеї подвійного монітора читається EDID для мого дисплея HDMI-0, але EDID для мого DVI-0 не зчитується. Вказівка ​​на конфігураційний скрипт, який зберігається в /usr/bin, не працювала, але додавання цього сценарію до моїх програм запуску gnome-session-propertiesбуло успішним!
noobninja

1

На основі відповідей у ​​верхній частині, я провів тест і знайшов корисний метод, який працює для мене, тоді я створив простий сценарій, щоб автоматизувати його з моїми автоматичними встановленнями. Але це підійде до будь-яких інших справ.

Створіть scriptinstallxrandrfixed.sh Додайте ці рядки:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

це створить сценарії та файли для відображення та сеансу lightdm. не забули дати йому дозвіл на виконання

chmod + x scriptinstallxrandrfixed.sh

І виконати

./scriptinstallxrandrfixed.sh (ви повинні бути розміщені в тому самому каталозі, де і файл.)

якщо не в одному каталозі: /path/to/script/scriptinstallxrandrfixed.sh

Змініть його на ноги вашим потребам. З повагою. Пабло.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.