Как я могу сделать настройку xrandr постоянной?

66

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

Как я могу сделать это с LigthDM в Ubuntu Oneiric?

Edocastillo
источник
добавить в .xprofile в вашей домашней папке. См. Askubuntu.com/questions/63863/… для ознакомления с основным руководством по настройке разрешения и добавлению в .xprofile
duffydack

Ответы:

22

Я думаю, что вы можете добавить режимы отображения /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]
Nimmermehr
источник
Я попробовал это, и это не загрузилось бы по некоторой причине. Я использовал modeline, сгенерированный из cvtкоманды, и драйвер из другой (и vesaтоже попробовал ), но он просто завис без сообщений об ошибках. Решение Джона Робертса отлично сработало для меня и не зависит от таких вещей, как драйвер видеокарты, о котором вы здесь упомянули, что может легко пойти не так для новичков, поэтому я голосую за его ответ.
Майк
1
Похоже, это не помогает для таких вещей, как --rotate.
Джерико
2
Этот ответ устарел. См. Джон Робертс Ответ
con-f-use
+1 Отлично-о! Использование GDM с Gnome 3.16, и это заставило мой GDm распознавать мониторы 1080p. Спасибо!
eduncan911
На моем компьютере lshwвывод i915, однако правильный драйвер есть intel.
user202729
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

Вы можете использовать графический инструмент «arandr» для генерации вышеуказанного скрипта sh, выбирая параметры из X-конфигурации вашего текущего сеанса.

Убедитесь, что ваш сценарий оболочки является исполняемым:

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

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

/usr/share/mycustomdesktopvideo.sh

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

Джон Робертс
источник
Для Mint 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 должны быть изменены в соответствии с вашими.

Meconio
источник
Это решение отлично работает для lubuntu 17.x на старой машине. Это влияет только на сеанс, поэтому экран входа приветствующего не отображается с желаемым разрешением.
лаконбасс
6

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

У меня есть старый Aspire 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, просто больше не работают должным образом, это Единственное решение, которое я нашел, работает.

Удачи!

faithinfriction
источник
Использование 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 не включает в свой сценарий sh генерацию всех параметров, работающих в текущем сеансе. Например, основной монитор (если используется конфигурация с двумя мониторами), частота обновления и настройки гаммы для каждого монитора не включены. Мой сессионный скрипт выглядит так:

#!/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

Надеюсь, что это помогает, и спасибо sudo-соку.

PS Обратите внимание на двойное -в команде xrandr --(на моем экране не слишком отчетливо).

abisdad
источник
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)

Откройте Startup Applications (или запустите gnome-session-properties) и нажмите «ДОБАВИТЬ». Введите имя и введите в командной строке:

bash /home/yourusername/yourscriptname.sh

Сохраните его, и теперь скрипт будет запускаться при каждом входе в систему, поэтому вам нужно будет сначала выйти из системы, чтобы он вступил в силу. Выполнение команды (например bash /home/yourusername/yourscriptname.sh) в терминале также было бы хорошей идеей, чтобы проверить, работает ли скрипт.

Нихилу
источник
Это было отредактировано (вместо того, чтобы быть удаленным) OP этого ответа, как это было размещено здесь, а не здесь - я восстановил исходное форматирование, поскольку это может быть полезно, так как это должно восстановить конфигурацию xrandr при входе в систему - содержимое скрипта bash должно вероятно, следует заменить на команды xrandr, используемые для получения правильной конфигурации.
Уилф
В моем мониторе с двумя мониторами EDID для моего дисплея HDMI-0 читается, но EDID для моего DVI-0 не читается. Указание на скрипт конфигурации, хранящийся в /usr/bin, не сработало, но добавление этого скрипта в мои приложения запуска gnome-session-propertiesбыло успешным!
noobninja
1

Основываясь на ответах выше, я провел некоторый тест и нашел полезный метод, который мне подходит, затем я создал простой скрипт для его автоматизации с помощью автоматической установки. Но это будет работать в любых других случаях.

Создайте скрипт. Installxrandrfixed.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

Измените это, чтобы ноги ваши потребности. С уважением. Пабло.

паблодав
источник