В некоторых случаях, как правило, после неправильной перезагрузки компьютера разрешение экрана входа в систему не по умолчанию 1440x900, но я думаю, 1600x900. Теперь у меня есть этот монитор, который действительно плохо справляется с разрешениями, на которые он не рассчитан, и будет показывать глупое окно «неправильного разрешения», прыгающее по экрану.
Есть ли способ заставить экран входа в систему загружать разрешение 1440x900, несмотря ни на что? Я использую Ubuntu 11.10 с Unity и LightDM.
Можно сделать сценарий для этого (источник Разрешение LightDM).
terminal
в Вашей единице подчеркивают штриховой линией, чтобы видеть опцию или нажать 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
Вводите/копируйте это в:
#!/bin/sh
xrandr --output DVI-0 --primary --mode 1440x900
Сохраните это на своем рабочем столе как 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, входят в систему экран.
(эти инструкции могли бы выглядеть длинными, но они не занимают много времени вообще),
Я создал этот скрипт , чтобы сделать его более динамичным (несколько рабочих областей / разные мониторы).
Только раздражение: когда вы входите из lightdm, экран все еще мигает, как будто он хочет изменить разрешение: s
Мне нравится прикреплять мой скрипт, который настраивает мониторы, к одной из клавиш мультимедиа на моей клавиатуре, которую я в противном случае не использую. в настоящее время у меня есть кнопка с надписью «Windows Media Center», чтобы заставить мои дисплеи в их предпочтительной конфигурации. таким образом, если вы летите вслепую и ваши мониторы не синхронизируются с нужным разрешением, просто нажмите горячую клавишу и все исправлено.
Если вы используете GTDM приветствие LightDM, вы можете запустить xrandr -q
, чтобы найти имена ваших мониторов, затем отредактировать /etc/lightdm/lightdm-gtk-greeter
и установить свойство active-monitor
, как описано в комментариях внутри этого файла. Это свойство может принимать несколько упорядоченных значений, включая #cursor
для монитора, на котором в данный момент отображается курсор мыши.
Это - то, как я получил его работающий в Xubuntu 16.04.
необходимо получить вдоль строки для нужного разрешения. Это в результате команды:
xrandr --verbose
Теперь выбирают часть с разрешением, которое Вы хотите. Это посмотрит что-то как:
1152x864 (0xa6) 108.000MHz +HSync +VSync
h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz
v: height 864 start 865 end 868 total 900 clock 75.00Hz
От данных выше Вас должен получить строку 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync
.
Для нахождения названия вывода найдите строку подобной также:
VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm
Здесь мой вывод называют VGA1
.
Теперь создают сценарий:
sudo gedit /usr/share/lightdmxrandr.sh
Затем в файле пишут следующее:
#!/bin/sh
xrandr --newmode "1152x864_75.00" 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync
xrandr --addmode VGA1 "1152x864_75.00"
xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal
Сохраняют и закрывают файл. Сделайте исполняемый файл сценария:
sudo chmod a+rx /usr/share/lightdmxrandr.sh
Создают файл конфигурации для вызова сценария просто созданным.
sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf
внутренняя часть этот файл войдите:
[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh
Сохраняют и закрывают файл. Перезапуск и надо надеяться разрешение, которое Вы выбрали, будут при Вашем входе в систему.
На практике это - единственный путь, который работал на меня, даже при том, что воссоздание существующих разрешений не логично.
Ответ, измененный от этого вопрос .
примечание
альтернативным способом получить длинную строку разрешения является программа cvt
. Получить строку для разрешения 1152x864, частота обновления 75.00:
cvt 1152 864 75
Это дало мне немного отличающееся разрешение, чем мое настольное разрешение и является причиной, я не включал метод в основной ответ.
Сценарий Аксельрода несколько неисправен, так как grep для «подключен» также захватывает все «отключенные» дисплеи ... не то, что мы хотим ...
Более того, использование grep с awk, tail и т. Д. Является расточительным, и я бы предложил следующее. Кроме того, в 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;
То, что я нашел полезным, было сообщение на сайте руководства Ubuntu . Я пробовал так много вещей в Ubuntu 11.10 и даже пытался использовать просто GNOME Classic. Разрешение всегда было 1024x768, и когда я вручную установил его на 1440x900, оно было «виртуальным», я имею в виду, что мне приходилось прокручивать мышью, чтобы исследовать весь рабочий стол, выходящий за пределы реальных размеров экрана.
В Терминале я выполнил эту команду:
sudo gedit /etc/default/grub
. Для загрузки текстового редактора может потребоваться некоторое время. После загрузки я отредактировал строку
GRUB_GFXMODE=1024x768
и изменил ее на:
GRUB_GFXMODE=1440x900
Не забудьте запустить update-grub
, чтобы применить изменения.
После этого я попытался переустановить драйверы VESA (на этом компьютере у меня GeForce 260 GTX). Я знаю, что лучше использовать официальные драйверы Nvidia, но при их использовании проблема всегда была одна и та же ... Думаю, теперь производительность будет хуже.
Итак, проверяя панель «Настройки сервера Nvidia X», я убедился, что мое разрешение было добавлено, и, переключившись на него, экран приобрел правильный вид. На самом деле я использую Ubuntu 11.10, но в GNOME Classic.
Я новичок в Linux, поэтому надеюсь, что я написал достойные вещи.
У меня была такая же проблема на моем MacBook Pro в середине 2014 года (11,1) под управлением Xenial. Я перепробовал все вышеупомянутые решения в различных формах, но неизменно приводил к тому, что X переходил в отказоустойчивый режим с низкой графикой (но, отображаясь в том самом разрешении, я хотел, чтобы он устанавливался по умолчанию не меньше. на форумах и поиске в Интернете, оказалось, что я забыл самое простое и потенциальное решение по умолчанию: nomodeset. Это решило проблему.
TL; DR: Не забудьте попробовать nomodeset! Esp. на MacbookPro 11, 1.
Просто немного улучшил вышеописанный сценарий Экслрода .
Все, что вам нужно сделать, это указать, какой монитор использовать в качестве основного, а какой - дисплей вашего ноутбука (LVDS).
#!/bin/bash LVDS="LVDS-0" PRIMARY="VGA-0" function get_displays() { xrandr -q | grep connected | awk '{print $1}' } function get_resolution() { [[ -z "$1" ]] && return 0 || xrandr -q | grep -A1 $1 | tail -1 | awk '{print $1}' | grep -e "^[0-9]" } for display in $(get_displays); do resolution=`get_resolution $display` [[ $display == $PRIMARY ]] && arg="--primary"; [[ -n $resolution ]] && mode="--mode $resolution"; if [[ $display == $LVDS ]]; then xrandr --output $display --off elif [[ -n $mode ]]; then xrandr --output $display $arg $mode fi unset mode arg resolution; done
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf
затем в файле:
Section "Monitor"
Identifier "VGA1"
Option "PreferredMode" "1152x864"
EndSection
Сохранить и выйти. Значения были получены из команды xrandr -q
. VGA1
- это имя моего соединителя, а 1152x864
- имя разрешения.
Это работает для Xubuntu 16.04. Он устанавливает предпочтительное разрешение, и для меня он позволяет мне устанавливать разрешение экрана входа в систему вместо того, чтобы по умолчанию использовать самое высокое поддерживаемое разрешение.
Изменено из ответов здесь
Я предполагаю, что ваш монитор сообщает о высоком разрешении экрана как о предпочтительном. Теперь вы хотели бы переопределить это предпочтение по умолчанию . См. мой ответ на очень похожий вопрос , чтобы узнать, как это можно сделать.
У меня была противоположная проблема: у меня всегда было более низкое разрешение экрана (1280x1024), чем то, которое я хотел (1600x1200). Однако исправление, которое я нашел (и описал в связанном ответе), будет применимо аналогично вашей проблеме.
Для настройки с несколькими мониторами, когда вы можете отключить свой ноутбук и использовать без него, вот простое решение:
запустить:
xrandr
Получить устройства, которые вы обычно используете для ноутбука, обычно LVDS1, и для меня у меня есть DP2 (displayport 2), это может быть HDMI1 или что-то еще, просто найдите те с разрешениями, перечисленными рядом с ними.
Создайте этот небольшой bash-файл:
#!/bin/bash
mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
xrandr --output LVDS1 --off
xrandr --output DP2 --primary --mode 2540x1440
fi
Замените LVDS1 подключением монитора вашего ноутбука.
Замените DP2 подключением к внешнему монитору.
Поместить скрипт bash в / usr / bin / local /
chmod + x скрипт
edit /etc/lightdm/lightdm.conf
Добавить
display-setup-script=/path/to/my/script
Перезагрузка.
Изменение разрешения произойдет только тогда, когда вы действительно находитесь на этом дисплее.
Если у вас есть несколько мест с разными мониторами / разрешениями на одном разъеме, вам придется добавить больше интеллекта в ваш скрипт bash.
Не унавоживайте со сценариями или конфигурационными файлами, которые имеют возможность рендеринга Вашего неприменимого экрана входа в систему!
Вместо этого вход в систему и набор Ваши предпочтительные экранные настройки*, затем выполняет эту команду:
sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml
Ваше разрешение входа в систему будет теперь всегда отражать настройки пользователя, в которого Вы в настоящее время подписываетесь.
*Не забывайте нажимать "Apply"
Я нашел очень простой обходной путь, который отлично работает для меня, запустив 13.04. ( обновление : теперь 13.10) на ноутбуке с 24-дюймовым внешним экраном, который не подключен постоянно.
Я просто скопирую из здесь
< blockquote>Так как мои мониторы уже были настроены правильно, мне просто нужно было выполнить шаг 3.
Некоторые другие ответы, приведенные здесь, работали для меня, но только в определенном сценарии, когда существует риск неработоспособности системы в других сценариях (ОШИБКА РЕЖИМА НИЗКОЙ ГРАФИКИ). Например, с постоянно подключенным внешним монитором (принятый ответ @captain_G) или всегда с то же устройство, подключенное к выходу, используемому для внешнего монитора (сценарий @Axlrod). Кажется, что ответ @ MarcoV является наиболее общим решением, однако он все еще включает правила сценариев.
Вы можете вместо создания сценария просто добавить в файл /etc/lightdm/lightdm.conf
строку, подобную этой:
display-setup-script=xrandr --output default --mode 1280x720
Перед вставкой убедитесь, что команда работает, потому что при неправильной команде lightdm не запустится. 113]
Принятый ответ капитана работает, если в вашей системе есть lightdm.conf
, и по какой-то причине в моем Xubuntu 20.04 его не было.
Чтобы обойти это, создайте файл /etc/lightdm/lightdm.conf
со следующим содержимым:
[SeatDefaults]
display-setup-script=/home/owner/xrandr_for_lightdm.sh
Я бы предпочел решение на основе копирования, как у Tobold, но оно у меня не работает 20.04.