На этот вопрос уже есть ответ здесь:
После обновления до Ubuntu 13.10 на моем ноутбуке (фактически до Xubuntu, так как я перешел на XFCE) я столкнулся с проблемами с LightDM:
Я использую два внешних дисплея (один 24" и один 22"), подключенных к док-станции моего ноутбука. После установки драйвера NVIDIA 319 я использовал nvidia-settings для настройки обоих дисплеев на использование TwinView и правильных собственных разрешений. Я также сохранил эту конфигурацию в файле /etc/X11/xorg.conf. Сейчас, когда я вхожу в систему, мои настройки дисплея "загружаются" правильно.
Однако LightDM, похоже, игнорирует мою настройку: Каждый раз экран входа в систему отображается в режиме клона вместо TwinView с фоновым изображением неправильного размера (слишком маленьким) для 24-дюймового дисплея.
Как я могу это исправить?
Обновление:
Я только что заметил, что LightDM использует неправильную настройку дисплея (т.е. режим клона) только когда крышка ноутбука закрыта в док-станции. Когда я держу крышку ноутбука открытой (даже с отключенным дисплеем ноутбука), LightDM ведет себя правильно и использует именно ту настройку дисплея, которую я настроил для своей X-сессии.
Решения для аналогичных вопросов, которые включают использование xrandr в скрипте и запуск его с опцией "display-setup-script" или подобной в /etc/lightdm/lightdm.conf не работают: Мой скрипт (см. ниже) выполняется, но разрешение не меняется. При выполнении вручную в X-сессии скрипт работает отлично.
Возможно, что-то переопределяется/заменяется драйвером NVIDIA? Я уже пробовал драйверы NVIDIA 304, 319 и 331 без успеха. В 13.04 эта проблема не возникала, мне даже не понадобился скрипт для LightDM.
Мой текущий скрипт (/usr/share/lightdmxrandr.sh):
#!/bin/bash
extscreens=$(xrandr -q | grep -c "DP-[02] connected")
if [[ $extscreens == 2 ]]; then
xrandr --output DP-2 --primary --mode 1920x1200 \
--output DP-0 --mode 1680x1050 --right-of DP-2 --output LVDS-0 --off
else
xrandr --output LVDS-0 --mode 1280x800 --output DP-2 --off --output DP-2 --off
fi
exit 0
/etc/lightdm/lightdm. conf:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
display-setup-script=/usr/share/lightdmxrandr.sh
session-setup-script=/usr/share/lightdmxrandr.sh
greeter-setup-script=/usr/share/lightdmxrandr.sh
После перехода с Unity на XFCE решение было следующим:
Установите стандартный LightDM greeter для XFCE:
apt-get install lightdm-gtk-greeter xubuntu-default-settings
Измените соответствующую строку в /etc/lightdm/lightdm.conf:
До:
[SeatDefaults]
greeter-session=unity-greeter
...
После:
[SeatDefaults]
greeter-session=lightdm-gtk-greeter
...
Теперь все дисплеи настроены правильно на экране входа в LightDM.
Я использую
session-cleanup-script=path-to-script
для запуска моего скрипта, и он отлично работает для меня ... На экране lightdm отображается правильное разрешение, а мониторы находятся на правильных сторонах.
Имейте в виду, что я использую что-то вроде
nvidia-settings --assign CurrentMetaMode="HDMI-1: 1280x720_60 +1920+0 {ViewPortIn=1280x720, viewportout=1240x697+20+11}, DVI-D-0: nvidia-auto-select +0+0"
, а не xrandr, так как мне нужно также исправить оверскан для моего телевизора, так как у него нет опции.
P.S. 13.10 изменил расположение файла на подкаталог (читайте в этом блоге)