В редких случаях, обычно после неправильной перезагрузки моего компьютера, разрешение экрана входа в систему по умолчанию не 1440x900, но я думаю, что 1600x900. Теперь у меня есть этот монитор, который действительно плохо справляется с разрешениями, на которые он не рассчитан, и будет показывать глупое окно "неправильное разрешение", прыгающее по экрану.
Есть ли какой-нибудь способ заставить экран входа в систему загружать разрешение 1440x900, несмотря ни на что? Я использую Ubuntu 11.10 с Unity и LightDM.
Во-первых, нам нужно выяснить, каков идентификатор вашего монитора. Откройте терминал, начните вводить текст terminal в вашем unity dash, чтобы увидеть опцию, или нажмите Ctrl+Alt+T
Введите/скопируйте эту команду, чтобы отобразить сведения о вашем дисплее:
xrandr -q
Если у вас есть только один монитор, вы увидите на выходе строку, подобную следующей (возможно, с некоторыми другими значениями, это идентификатор в начале, который нам нужен):
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
Идентификатор экрана в этом случае равен DVI-0
Откройте ваш любимый текстовый редактор, давайте использовать gedit для этого примера, нажмите Alt+F2 и введите gedit
Сохраните это на своем рабочем столе как lightdmxrandr.sh
Возможно, вы захотите протестировать сценарий, прежде чем мы применим его на практике. Вернитесь в терминал и перейдите туда, где мы только что его сохранили:
cd ~/Desktop
Теперь нам нужно сделать его исполняемым:
chmod a+rx lightdmxrandr.sh
Теперь запустите его:
./lightdmxrandr.sh
(Если ваш экран автоматически корректируется после входа в систему, вы, вероятно, не увидите разницы, поэтому вы можете использовать другое разрешение теста, но вы знаете, что оно работает во время тестирования)
Теперь давайте перенесем небольшой сценарий, который мы сделали:
sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
Если вы не используете sudo вы можете получить ошибку разрешения (я использую эту папку из личных предпочтений)
Теперь нам нужно запустить это в lightdm, перейдите в нужную папку:
cd /etc/lightdm
Откройте файл lightdm conf:
sudo gedit lightdm.conf
Теперь добавьте инструкцию для запуска вашего скрипта после последней строки и сохраните:
display-setup-script=/usr/share/lightdmxrandr.sh
Теперь перезагрузитесь, и это должно установить правильное разрешение на экране входа в систему lightdm.
(эти инструкции могут показаться длинными, но они совсем не занимают много времени)
Я нашел очень простое решение, которое отлично работает для меня под управлением 13.04. (обновление: сейчас 13.10) на ноутбуке с 24-дюймовым внешним экраном, который не подключен постоянно.
используйте xrandr или утилиту управления дисплеями, чтобы настроить ваши мониторы так, как вы хотели бы, чтобы они были настроены на экране входа в систему
копировать ~/.config/monitors.xml в /var/lib/lightdm/.config
Поскольку у меня уже были правильно настроены мониторы, мне просто нужно было выполнить шаг 3.
Некоторые другие ответы, приведенные здесь, сработали для меня, но только в определенном сценарии, в то время как в других сценариях существует риск непригодности системы (ОШИБКА НИЗКОГО ГРАФИЧЕСКОГО РЕЖИМА). Например, с постоянно подключенным внешним монитором (принятый ответ @captain_G) или с всегда одним и тем же устройством, подключенным к выходу, используемому для внешнего монитора (сценарий @Axlrod). Похоже, что ответ @MarcoV является наиболее общим решением, однако он по-прежнему включает правила написания сценариев.
Сохраните и выйдите. Значения были получены из команды xrandr -q. VGA1 это имя моего соединителя и 1152x864 это название резолюции.
Это работает для Xubuntu 16.04. Он устанавливает предпочтительное разрешение, и для меня это позволяет мне установить разрешение экрана входа в систему, вместо того, чтобы по умолчанию использовать самое высокое поддерживаемое разрешение.
Для установки с несколькими мониторами, когда вы можете отключить свой ноутбук и использовать его без него, вот простое решение:
бежать:
xrandr
Получите устройства, которые вы используете, ноутбук обычно LVDS1, а для меня у меня есть DP2 (displayport 2), это может быть HDMI1 или что-нибудь еще, просто найдите те, разрешения которых указаны рядом с ними.
Замените LVDS1 подключением к монитору вашего ноутбука.
Замените DP2 подключением к внешнему монитору.
Поместите скрипт bash в /usr/bin/local/
chmod +x скрипт
редактировать /etc/lightdm/lightdm.conf
Добавь
display-setup-script=/path/to/my/script
Перезагрузить.
Изменение разрешения произойдет только тогда, когда вы действительно сейчас находитесь на этом дисплее.
Если у вас есть несколько мест с разными мониторами / разрешениями на одном и том же соединителе, вам придется добавить больше информации в свой сценарий bash.
То, что я счел полезным, было сообщением о Веб-сайт руководства по Ubuntu . Я перепробовал так много вещей в Ubuntu 11.10 и даже пытался использовать simply GNOME Classic. Разрешение всегда было 1024х768, и когда я вручную установил его на 1440х900, оно было "виртуальным", я имею в виду, что мне приходилось прокручивать мышью, чтобы исследовать весь рабочий стол, который был за пределами реальных размеров экрана.
В Терминале я выполнил эту команду:
sudo gedit /etc/default/grub
Загрузка текстового редактора может занять некоторое время. Как только он загрузился, я отредактировал строку
GRUB_GFXMODE=1024x768
и изменил его на:
GRUB_GFXMODE=1440x900
Не забудь бежать update-grub чтобы применить изменения.
После этого я попытался переустановить драйверы VESA (на этом компьютере у меня GeForce 260 GTX). Я знаю, что лучший способ - использовать официальные драйверы Nvidia, но при их использовании проблема всегда была одной и той же... Конечно, я думаю, что теперь производительность будет хуже.
Итак, проверив панель настроек Nvidia X Server, я убедился, что мое разрешение было добавлено, и, переключившись на него, экран принял правильный вид. На самом деле я использую Ubuntu 11.10, но в GNOME Classic.
Я новичок в Linux, так что надеюсь, что написал достойные вещи.
“Предпочтительные режимы экрана” могут быть проблемой
Я предполагаю, что ваш монитор сообщает о высоком разрешении экрана как о предпочтительном. Теперь вы хотели бы переопределите это предпочтение по умолчанию. Смотри мой ответ на очень похожий вопрос подробнее о том, как это можно сделать.
У меня была противоположная проблема: я всегда получал более низкое разрешение экрана (1280x1024), чем то, которое я хотел (1600x1200). Однако исправление, которое я нашел (и описал в связанном ответе), надеюсь, будет применимо аналогично вашей проблеме.
Сценарий Аксельрода несколько неисправен, так как grep для "подключенного" также захватывает все "отключенные" дисплеи ... не то, что мы хотим...
Более того, используя grep с awk и tail, etc...is расточительно обходной путь, и в этой связи я бы предложил следующее. Кроме того, в get_resolution мы меняем код возврата на 1, поскольку нулевой код возврата обычно указывает на отсутствие ошибок, поэтому мы используем 1, если первый параметр отсутствует.
В заключение, создавая экземпляр основной части скрипта в качестве функции, он может быть получен и выполнен в любое другое время, если потребуется, в библиотеке функций, а также получить возможность использовать локальные переменные, которые не нужно сбрасывать.
function get_displays(){ xrandr -q | awk '($2 == "connected") {print $1;}'};# the "\" and c/r were added for readability on this website# I do not have them in my code variant that I use.function get_resolution(){ [[ -z "$1" ]] && return 1; xrandr -q | \ awk -v display="$1" '($1 == display && $2 == "connected") {getline; print $1;}';};function setup_displays(){ local primary=${2:-"VGA-0"}; local lvds=${3:-"LVDS-0"}; for display in $(get_displays); do local resolution=${1:-"$(get_resolution $display)"}; [[ $display == $primary ]] && local arg="--primary"; [[ -n $resolution ]] && local mode="--mode $resolution"; if [[ $display == $lvds ]]; then xrandr --output $display --off; elif [[ -n $mode ]]; then xrandr --output $display $arg $mode; fi; done;};setup_displays;