Неверное разрешение экрана входа в систему

38

В необычном случае, как правило, после некорректного перезапуска моего компьютера, разрешение экрана входа в систему не является стандартным 1440x900, но я думаю, что 1600x900. Теперь у меня есть этот монитор, который очень плохо справляется с разрешениями, которые он не предназначен для обработки, и покажет глупое поле «неправильного разрешения», прыгающее по экрану.

Есть ли способ сделать загрузку экрана для входа в систему разрешением 1440x900 независимо от того, что? Я запускаю Ubuntu 11.10 с Unity и LightDM.

    
задан Ruben Bakker 30.10.2011 в 15:10
источник

13 ответов

36

Вы можете создать для этого сценарий (источник LightDM Resolution ).

  1. Во-первых, нам нужно узнать, что такое идентификатор ваших мониторов. Откройте терминал, начните вводить terminal в тире вашей единицы, чтобы увидеть эту опцию, или нажмите Ctrl + Alt + T
  2. Введите / скопируйте эту команду, чтобы отобразить информацию о вашем дисплее:

    xrandr -q
    

    Если у вас есть только один монитор, вы увидите строку на выходе, например, следующую (возможно, с некоторыми разными значениями, ее идентификатор в начале мы будем):

    DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
    

    Идентификатор экрана DVI-0 в этом случае

  3. Откройте свой любимый текстовый редактор, используйте gedit для этого примера, нажмите Alt + F2 и наберите gedit

  4. Введите / скопируйте это в:

    #!/bin/sh
    xrandr --output DVI-0 --primary --mode 1440x900
    

    Сохраните это на рабочем столе как lightdmxrandr.sh

  5. Вы можете протестировать скрипт, прежде чем применять его на практике. Вернувшись в терминал, перейдите туда, где мы его только что сохранили:

    cd ~/Desktop
    

    Теперь нам нужно сделать его исполняемым:

    chmod a+rx lightdmxrandr.sh
    

    Теперь запустите его:

    ./lightdmxrandr.sh
    

    (Если ваш экран автоматически автоматически корректируется после входа в систему, вы, вероятно, не увидите разницы, поэтому вы можете использовать другое тестовое разрешение, но вы знаете, что работает во время тестирования)

  6. Теперь переместите маленький скрипт, который мы сделали:

    sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
    

    Если вы не используете sudo , вы можете получить ошибку разрешения (я использую эту папку из личных предпочтений)

  7. Теперь нам нужно запустить это в lightdm, перейдите к правильной папке:

    cd /etc/lightdm
    
  8. Откройте файл confd lightdm:

    sudo gedit lightdm.conf
    
  9. Теперь добавьте инструкцию для запуска вашего скрипта после последней строки и сохраните:

    display-setup-script=/usr/share/lightdmxrandr.sh
    

Теперь перезагрузитесь и установите правильное разрешение на экране журнала Lightdm.

(эти инструкции могут выглядеть долго, но они не занимают много времени)

    
ответ дан captain_G 02.11.2011 в 21:37
источник
36

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

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

  
  1. войти
  2.   
  3. используйте xrandr или утилиту Displays для настройки ваших мониторов, как вы хотите, чтобы они были настроены на экране входа в систему.
  4.   
  5. copy ~ / .config / monitors.xml в /var/lib/lightdm/.config
  6.   

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

Некоторые другие ответы, приведенные здесь, работали для меня, но только в конкретном сценарии при запуске риска непригодной системы в других сценариях (LOW GRAPHICS MODE ERROR). Например, при постоянном подключении внешнего монитора (принятый ответ by @captain_G) или всегда с одним и тем же устройством, подключенным к выходу, используемому для внешнего монитора (скрипт by @Axlrod). Похоже, что ответ @ MarcoV является наиболее общим решением, однако он по-прежнему связан с правилами написания сценариев.

    
ответ дан Tobold 13.08.2013 в 10:39
16

Вместо создания скрипта вы можете просто добавить в файл /etc/lightdm/lightdm.conf строку вроде этого:

display-setup-script=xrandr --output default --mode 1280x720

Перед установкой убедитесь, что команда работает, потому что с неправильной командой lightdm не запускается.

    
ответ дан eugeniy 11.06.2012 в 20:54
2

Для настройки нескольких мониторов, где вы можете отключить ваш ноутбук и использовать без него, вот простое решение:

пробег:

xrandr

Получить устройства, на которых вы используете ноутбук, обычно LVDS1, и для меня у меня есть DP2 (displayport 2), это может быть HDMI1 или что-то еще, просто найдите те, у которых есть разрешения, перечисленные рядом с ними.

Создайте этот маленький файл bash:

#!/bin/bash

mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print  }')"
if [ -n "$mode" ]; then
  xrandr --output LVDS1 --off
  xrandr --output DP2 --primary --mode 2540x1440
fi

Замените LVDS1 подключением монитора ноутбука.

Замените DP2 подключением внешнего монитора.

Поместите скрипт bash в / usr / bin / local /

chmod + x скрипт

изменить /etc/lightdm/lightdm.conf

Добавить

display-setup-script=/path/to/my/script

Reboot.

Изменение разрешения произойдет только тогда, когда вы на самом деле находитесь на этом дисплее.

Если у вас есть несколько мест с разными мониторами / разрешениями на одном и том же коннекторе, вам нужно будет добавить больше интеллекта в свой сценарий bash.

    
ответ дан Alex R 14.06.2013 в 15:02
2

Немного улучшил приведенный выше скрипт Axlrod .

Все, что вам нужно сделать, это указать, какой монитор использовать первичный, и который является вашим дисплеем ноутбука (LVDS).

#!/bin/bash
LVDS="LVDS-0"
PRIMARY="VGA-0"

function get_displays()
{
        xrandr -q | grep connected | awk '{print }'
}

function get_resolution()
{
        [[ -z "" ]] && return 0 || xrandr -q | grep -A1  | tail -1 | awk '{print }' | 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
    
ответ дан Ikko 25.07.2014 в 07:25
1

Не отчаивайтесь со сценариями или конфигурационными файлами, которые могут сделать ваш экран входа в систему непригодным!

Вместо этого войдите в систему и установите предпочтительные настройки экрана *, затем запустите эту команду:

sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml

Ваше разрешение для входа теперь будет всегда соответствовать настройкам пользователя, с которым вы в настоящее время вошли.

* Не забудьте нажать «Применить»

    
ответ дан Nathan J. Brauer 26.01.2015 в 21:35
1
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. Он устанавливает предпочтительное разрешение, и для меня это позволяет мне установить разрешение экрана входа, вместо того, чтобы иметь по умолчанию максимальное поддерживаемое разрешение.

Изменено из ответов здесь

    
ответ дан Michael Faraday 29.05.2017 в 10:20
1

То, что я нашел полезным, было опубликовано на веб-сайте веб-сайта 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, поэтому надеюсь, что написал приличные вещи.

    
ответ дан Valinux 29.02.2012 в 09:08
0

Скрипт Axelrod несколько неисправен, так как grep для 'connected' также захватывает все «отключенные» дисплеи ... не то, что мы хотим ...

Кроме того, использование grep с awk и хвостом и т. д. является расточительно обходным, и я бы предложил следующее ниже. Кроме того, в get_resolution мы меняем код возврата на 1, так как код возврата нуля обычно указывает на отсутствие ошибок, поэтому мы используем 1, если первый параметр отсутствует.

В заключение, создав экземпляр основной части скрипта функцией, он может быть получен и выполнен в любое другое время, если необходимо, в библиотеке функций, а также для использования локальных переменных, которые не нуждаются в быть неустановленным.

function get_displays()
{
    xrandr -q | awk '( == "connected") {print ;}'
};

# 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 "" ]] && return 1;
    xrandr -q | \
    awk -v display="" '( == display &&  == "connected") {getline; print ;}';
};

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;
    
ответ дан blake private_last_name 20.05.2016 в 18:12
0

Вот как я работал в 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

Это дало мне немного другое разрешение, чем разрешение на рабочем столе, и именно поэтому я не включил метод в основной ответ.

    
ответ дан Michael Faraday 28.05.2017 в 18:38
-1

«Предпочтительные режимы экрана» могут быть проблемой

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

У меня была противоположная проблема: у меня всегда было меньшее разрешение экрана (1280x1024), чем у меня (1600x1200). Исправление, которое я нашел (и описано в связанном ответе), мы надеемся, что оно будет применимо аналогично вашей проблеме.

    
ответ дан Chriki 12.10.2014 в 16:15
-2

Я создал этот скрипт , чтобы сделать его более динамичным (несколько рабочих областей / различные мониторы).

Только раздражение: когда вы входите в систему из lightdm, экран все еще мигает, как будто он хочет изменить разрешение: s

    
ответ дан Leon 19.12.2011 в 07:56
-2

У меня была та же проблема на моем MacBook Pro в середине 2014 года (11,1), на котором запущена Xenial. Я пробовал все вышеупомянутые решения в различных формах, но неизменно получал бы X в безопасном режиме с низкой графикой (но отображался в самом разрешении, которое я хотел бы установить по умолчанию не менее.

После долгих споров по форумам и googling выясняется, что я забыл простейшее и по умолчанию потенциальное решение: nomodeset. Это устранило проблему.

TL; DR: Не забудьте попробовать nomodeset! Особенно на MacbookPro 11,1.

    
ответ дан IanGa 21.02.2016 в 14:45