Как заставить несколько мониторов правильно принимать решения для LightDM?

Точечные релизы являются результатом слияния всех изменений, внесенных со времени последней выпускной версии или исходной версии дистрибутива.

Они эквивалент пакетов обновления Microsoft в Windows World

Т.е.: Ubuntu 12.04 вышел в апреле 2012 года 12.04.1 в августе в августе и установил 186 исправлений с 12 апреля (см. Здесь: https://launchpad.net/ubuntu/+milestone/ubuntu -12.04.1)

Остерегайтесь, исправление 186 - это не 186 патчей или пакетов.

Одно исправление - это ответ на проблему, которая может включать более одного пакета.

Здесь вы найдете более подробную информацию: https://launchpad.net /ubuntu/+milestone/ubuntu-12.04.1 и для всех этапов ubuntu здесь: https://launchpad.net/ubuntu/+milestones

17
задан 9 April 2012 в 08:17

5 ответов

Мне удалось найти этот маленький базовый сценарий ниже, который отвечает на мой вопрос. Теперь, подключен ли внешний монитор или нет, Lightdm использует правильные разрешения на этапе greeter. Тем не менее, этот же сценарий должен быть изменен, чтобы быть общим, таким образом, чтобы пользователю не нужно было указывать вручную разрешения своих экранов ноутбука и монитора.

 (Parse the output of `XRAND -q` command, 
identify the connected devices, 
grab their first/maximum resolutions 
and use `XRANDR --output` to display them). 

Итак, если у кого-то есть лучшее решение или более общий сценарий, он - человек.

generic

    #!/bin/bash
    # V-1.0 by Hanynowsky - April 2012. 
    # I am a very basic script that works around bug 874241 repprted in launchpad.

    XCOM0=`xrandr -q | grep 'HDMI1 connected'`
    XCOM1=`xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1`
    XCOM2=`xrandr --output LVDS1 --mode 1366x768`
    # if the external monitor is connected, then we tell XRANDR to set up an extended desktop
    if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
    # if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
    else echo $XCOM2
    fi
    exit 0;
9
ответ дан 25 May 2018 в 12:53

ПРИМЕЧАНИЕ. Я также разместил этот ответ здесь

. Я нашел очень простой способ обхода, который отлично работает для меня с 13.04. на ноутбуке с 24-дюймовым внешним экраном, который не подключен постоянно.

Я просто скопирую здесь

, чтобы использовать xrandr или утилиту управления Displays, чтобы настроить ваши мониторы, как вы хотите, чтобы они были настроены на экране входа в систему sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/

Поскольку у меня уже были настроены мои мониторы, мне просто нужно было сделать шаг 3.

18
ответ дан 25 May 2018 в 12:53

Большое спасибо Ханыновскому! Поиск вашего ответа спас мне массу работы (недавно обновленный 12.04). Однако в моем случае это не обеспечило полного решения, поэтому я хотел бы добавить то, что я узнал. Моей установкой был Samsung S22A300B, подключенный к порту VGA Vaio VGN-CR120E со встроенным дисплеем 1280x800 и интегрированным графическим контроллером Mobile GM965 / GL960.

Вкратце, что я нашел:

Максимальное разрешение, которое я мог установить на внешний дисплей Samsung, с помощью параметра «Настройки системы отображения», был 1024x768. Это было вызвано тем, что мой VGA-контроллер не поддерживает EDID. По какой-то причине Windows Vista и Windows 7 (на другом ноутбуке) могут справиться с этой ситуацией и обеспечить полный диапазон разрешений.

Чтобы обойти это ограниченное максимальное разрешение, я сделал следующее:

Максимальное разрешение, которое я мог установить на внешний дисплей Samsung с использованием настройки систем отображения, был 1024x768. [!d3 ] Пробовал cvt для генерации модели -newmode modeline для 1920x1080, но, к сожалению, она не работала для моей установки. Это было вызвано тем, что мой VGA-контроллер не поддерживает EDID. По какой-то причине как Windows Vista, так и Windows 7 (на другом ноутбуке) могут справиться с этой ситуацией и предоставить полный спектр разрешений. Подключить эту модную линию вместе с изменением сценария для моей настройки (например, HDMI1-> VGA1, исправить разрешение для ноутбука и т. д.)

Этот ALMOST работал, но после входа в систему внешний монитор был сброшен с хорошего 1920x1080 до 1024x768. Оказалось, что это была постоянная пользовательская настройка, и ее можно было легко установить, используя Дисплеи ... Настройки системы (из меню передач) до теперь доступных 1920x1080. Теперь, когда я загружаюсь с подключенным внешним монитором, все работает так, как ожидалось.

Еще один сбой: если этот скрипт запускается дважды (например, с терминала), строка xrandr --newmode получит «BadName» цвет или шрифт не существует) ", но https://stackoverflow.com/questions/851704/xrandr-errors-badname-named-color-or-font-does-not-exist объяснил это и кажется доброкачественным. Также не должно быть проблемой, когда скрипт подключен к lightdm.conf по инструкциям Hanynowsky и запускается вручную.

Я предоставляю изменения, адаптированные для вышеуказанного (VGA без EDID-функций) в надеется, что это поможет кому-то другому. Как уже упоминалось в предыдущих ответах, вам придется адаптировать это для своей собственной установки. У меня нет никаких хороших советов по поводу получения правильной линии модема, но если кто-то еще, пожалуйста, попробуй чип.

#!/bin/bash
# Modified for Vaio with 1920x1080 external on VGA
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1="xrandr --output VGA1 --primary --mode 1920x1080 --output LVDS1 --mode 1280x800 --left-of VGA1"
XCOM2="xrandr --output LVDS1 --mode 1280x800"
NEWMODE="xrandr --newmode "1920x1080" 148.50  1920 2448 2492 2640  1080 1084 1089 1125 +hsync +vsync"
ADDMODE="xrandr --addmode VGA1 1920x1080"

# Always add this mode in case we need it (better would be to test first)
eval $NEWMODE
eval $ADDMODE

if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ];
then
        # if the external monitor is connected, then we tell XRANDR to set up an extended desktop
        eval $XCOM1
else
        # if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
        eval $XCOM2
fi
exit 0;

ПРИМЕЧАНИЕ. Я не уверен, нужна ли оценка (против эха в оригинал). Я вложил это, прежде чем обнаружил, что настройки My Displays ... сбросили внешний дисплей до более низкого разрешения.

2
ответ дан 25 May 2018 в 12:53
  • 1
    Добро пожаловать @Walter Wittel & amp; благодарю вас за ваш ценный вклад. Как только у меня будет время, я попытаюсь найти более общий сценарий, если это возможно; но я сомневаюсь, что с помощью XRANDR можно будет извлечь правильную линию мод для монитора без EDID. Во всяком случае, давайте посмотрим. – Hanynowsky 30 April 2012 в 08:36

Я обнаружил, что вместо использования --mode для явного определения разрешения, --auto выберет наилучшее разрешение для вас (самое большое, на что я верю).

#!/bin/bash

XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1=`xrandr --output LVDS1 --primary --auto --output VGA1 --auto --right-of LVDS1`
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi

exit 0;
1
ответ дан 25 May 2018 в 12:53
  • 1
    hachi ваш скрипт отлично работает! Любой, кто был затронут этой ошибкой, должен просто установить правильное разрешение своих экранов в этом скрипте и перезапустить lightdm: sudo restart lightdm thats all! Все отлично работает! Я разместил свой вопрос об этой проблеме здесь: askubuntu.com/questions/181112/… – conscientist 10 September 2012 в 04:20

Если вы используете GTK greeter LightDM, вы можете запустить xrandr -q, чтобы найти имена ваших мониторов, а затем отредактировать /etc/lightdm/lightdm-gtk-greeter и установить свойство active-monitor, как описано в комментариях внутри этого файла. Это свойство может принимать несколько упорядоченных значений, включая #cursor для монитора, который в настоящее время отображает курсор мыши.

0
ответ дан 25 May 2018 в 12:53

Другие вопросы по тегам:

Похожие вопросы: