Я затронут ОШИБКОЙ: https://bugs.launchpad.net/ubuntu / + source/unity-greeter / + ошибка/874241 Иначе, если как я Вам подключили ноутбук к второму монитору более высокого разрешения, LIGHTDM на этапе входа в систему, зеркально отражает дисплеи на обоих экранах, и присвойте им общее разрешение (1024X768) в моем случае, вместо того, чтобы расширить рабочий стол (Основной экран с зазывалой и вторичное устройство только с логотипом, как упомянуто в Нескольких Мониторах книга спецификаций UX для 12,04).
Вот мой xrandr-q
@L502X:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1848, maximum 8192 x 8192
LVDS1 connected 1366x768+309+1080 (normal left inverted right x axis y axis) 344mm x 193mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1600x1200 60.0
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1280x800 59.8
1024x768 60.0
800x600 60.3 56.2
640x480 60.0
DP1 disconnected (normal left inverted right x axis y axis)
Я пытался вынудить lightdm выполнить некоторые команды xrandr, чтобы установить правильное разрешение для каждого монитора и расширить рабочий стол, таким образом, я создал простой сценарий, названный/usr/share/lightdmxrand.sh:
#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
И сказал lightdm выполнять его:/etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-setup-script=/usr/bin/numlockx on
display-setup-script=/usr/share/lightdmxrandr.sh
перезапущенный lightdm: sudo restart lightdm
И экран входа в систему зазывалы единицы был корректен. Экраны с их соответствующими корректными разрешениями и если я перемещаю мышь в экран, это получает фокус с полем входа в систему и панелью, в то время как несфокусированный экран просто отображает Логотип Ubuntu (Столь же указанный в книге спецификации UX MM).Фантастика!
Это обходное решение работает отлично, пока внешний монитор подключен к ноутбуку. В ситуации, где это не соединено на этапе входа в систему, я добираюсь: НИЗКАЯ ОШИБКА ГРАФИЧЕСКОГО РЕЖИМА (Вы работаете в низком графическом режиме, Вашем экране, устройства ввода данных... не стали обнаруженными..). Нормальный, потому что xrandr
попытки произвести к не подключенному монитору.
Вопрос здесь состоит в том, как я должен изменить сценарий способом это, когда внешний монитор не подключен xrandr
только выводит на экран ноутбука и игнорирует любой внешний монитор. НАПРИМЕР:
If (xrandr -q | grep 'HDMI1 connected') != NULL (HDMI1 is connected )
then xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
else xrandr --output LVDS1 --mode 1366x768 (or do nothing - because the resolution of the laptop screen is correct when no external monitor is connected)
Заранее спасибо.
Я справился с этим маленьким базовым скриптом ниже, который отвечает на мой вопрос. Теперь, независимо от того, подключен внешний монитор или нет, Lightdm использует правильные разрешения на этапе приветствия. Тем не менее, этот же сценарий необходимо изменить, чтобы он стал универсальным , чтобы пользователю не нужно было вручную указывать разрешения экрана ноутбука и монитора.
(Parse the output of `XRAND -q` command,
identify the connected devices,
grab their first/maximum resolutions
and use `XRANDR --output` to display them).
Так что, если у кого-то есть лучшее решение. или более общий сценарий, он человек.
SCRIPT:
#!/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;
ПРИМЕЧАНИЕ. Я также разместил этот ответ здесь
. Я нашел очень простой обходной путь, который отлично работает для меня при запуске 13.04. на ноутбуке с 24-дюймовым внешним экраном, который не подключен постоянно.
Я просто скопирую из здесь
- войдите в систему
- используйте xrandr или утилиту управления дисплеями, чтобы настроить мониторы, как вы я бы хотел, чтобы они были настроены на экране входа в систему
sudo cp ~ / .config / monitors.xml /var/lib/lightdm/.config/
Так как мои мониторы уже были настроены правильно, мне просто нужно было сделать шаг 3.
Я обнаружил, что вместо использования --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;
Если вы используете средство приветствия GTK LightDM, вы можете запустить xrandr -q
, чтобы найти имена своих мониторов, а затем отредактировать / etc / lightdm / lightdm- gtk-greeter
и установите свойство active-monitor
, как описано в комментариях внутри этого файла. Это свойство может принимать несколько упорядоченных значений, включая #cursor
для монитора, на котором в данный момент отображается курсор мыши.
Большое спасибо Ханиновскому! Поиск вашего ответа сэкономил мне массу работы (недавно обновлен до 12.04). Однако в моем случае он не дал полного решения, поэтому я хотел бы добавить то, что я узнал. Моей установкой был Samsung S22A300B, подключенный к VGA-порту Vaio VGN-CR120E со встроенным дисплеем 1280x800 и интегрированным графическим контроллером Mobile GM965 / GL960.
Вкратце, я обнаружил:
Чтобы обойти это ограниченное максимальное разрешение, я сделал следующее:
Это ПОЧТИ работало, но после входа в систему внешний монитор был сброшен с хороших 1920x1080 обратно на 1024x768. Оказалось, что это была постоянная пользовательская настройка, и ее легко исправить, используя Дисплеи ... Системные настройки (из меню с шестеренкой) до теперь доступного 1920x1080. Теперь, когда я загружаюсь с подключенным внешним монитором, все работает, как ожидалось.
Еще один сбой: если этот сценарий запускается дважды (например, с терминала), строка xrandr --newmode получит "BadName (имя цвета или шрифта действительно не существует) ", но https://stackoverflow.com/questions/851704/xrandr-errors-badname- named-color-or-font-does-not-exist объяснил это, и это кажется безобидным . Также не должно быть проблем, если сценарий подключен к lightdm.conf согласно инструкциям Ханиновского, а не запускается вручную.
Я предоставляю изменения, адаптированные для вышеупомянутого (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;
ПРИМЕЧАНИЕ: я не уверен, нужен ли eval (в отличие от echo в оригинале). Я вставил это до того, как обнаружил, что мои Дисплеи ... настройки сбрасывали внешний дисплей на более низкое разрешение.