Resolução incorreta de tela de login

39

Em uma ocasião estranha, geralmente depois de reiniciar incorretamente o computador, minha resolução da tela de login não é 1440x900 padrão, mas acho que 1600x900. Agora, eu tenho esse monitor que é muito ruim em lidar com resoluções que não é projetado para manipular, e vai mostrar uma caixa de "resolução errada" bobo pulando pela tela.

Existe alguma maneira de fazer com que a tela de login carregue uma resolução de 1440x900, não importa o quê? Estou executando o Ubuntu 11.10 com Unity e LightDM.

    
por Ruben Bakker 30.10.2011 / 15:10

15 respostas

38

Você pode criar um script para isso (fonte LightDM Resolution ).

  1. Primeiramente, precisamos descobrir qual é o seu identificador de monitores. Abra um terminal, comece a digitar terminal em seu traço unitário para ver a opção ou pressione Ctrl + Alt + T
  2. Digite / copie este comando para mostrar seus detalhes de exibição:

    xrandr -q
    

    Se você tiver apenas um monitor, verá uma linha na saída como a seguinte (provavelmente com alguns valores diferentes, é o identificador no início que procuramos):

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

    O identificador de tela é DVI-0, neste caso

  3. Abra o seu editor de texto favorito, vamos usar o gedit para este exemplo, pressione Alt + F2 e digite gedit

  4. Digite / copie isto em:

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

    Salve isso na sua área de trabalho como lightdmxrandr.sh

  5. Você pode querer testar o script antes de colocá-lo em prática. De volta ao terminal, navegue até onde acabamos de salvá-lo:

    cd ~/Desktop
    

    Agora precisamos torná-lo executável:

    chmod a+rx lightdmxrandr.sh
    

    Agora execute:

    ./lightdmxrandr.sh
    

    (Se a sua tela corrige automaticamente automaticamente após o login, você provavelmente não verá a diferença, então você pode querer usar uma resolução de teste diferente, mas você sabe que funciona durante o teste)

  6. Agora vamos mover o pequeno roteiro que fizemos:

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

    Se você não usar sudo , poderá receber um erro de permissão (eu uso essa pasta por preferência pessoal)

  7. Precisamos agora executar isso no lightdm, navegue até a pasta correta:

    cd /etc/lightdm
    
  8. Abra o arquivo conf lightdm:

    sudo gedit lightdm.conf
    
  9. Agora adicione a instrução para executar seu script após a última linha e salve:

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

Agora reinicie e configure a resolução correta na tela de login do seu lightdm.

(essas instruções podem parecer longas, mas não demoram muito)

    
por captain_G 02.11.2011 / 21:37
36

Eu encontrei uma solução muito simples que funciona perfeitamente para mim rodando 13.04. ( atualização : agora 13.10) em um laptop com uma tela externa de 24 "que não está permanentemente conectada.

Eu apenas copio de aqui

  
  1. faça login
  2.   
  3. use xrandr ou o utilitário de controle de monitores para configurar seus monitores como você gostaria que fossem configurados na tela de login
  4.   
  5. copie ~ / .config / monitors.xml para /var/lib/lightdm/.config
  6.   

Desde que eu já tive meus monitores configurados corretamente eu tive que fazer o passo 3.

Algumas outras respostas dadas aqui funcionaram para mim, mas apenas em um cenário específico, enquanto corria o risco de um sistema inutilizável em outros cenários (BAIXO ERRO NO MODO GRÁFICO). Por exemplo, com o monitor externo permanentemente conectado (resposta aceita por @captain_G) ou sempre com o mesmo dispositivo conectado à saída usada para o monitor externo (script por @Alexloder). Parece que a resposta do @VizV é a solução mais genérica, mas ainda envolve regras de script.

    
por Tobold 13.08.2013 / 10:39
17

Você pode, em vez de criar um script, adicionar ao arquivo /etc/lightdm/lightdm.conf uma linha como esta:

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

Antes de inserir, certifique-se de que o comando funcione, porque com o comando errado, o lightdm não será iniciado.

    
por eugeniy 11.06.2012 / 20:54
2

Para uma configuração de vários monitores em que você pode desconectar seu laptop e usá-lo sem, eis uma solução simples:

executar:

xrandr

Obter os dispositivos que você está usando laptop é geralmente LVDS1, e para mim eu tenho um DP2 (DisplayPort 2), poderia ser HDMI1 ou qualquer outra coisa, basta encontrar aqueles com resoluções listadas ao lado deles.

Crie este pequeno arquivo 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

Substitua o LVDS1 pela conexão do monitor do laptop.

Substitua o DP2 pela conexão do monitor externo.

Coloque o script bash em / usr / bin / local /

chmod + x o script

edite o /etc/lightdm/lightdm.conf

Adicionar

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

Reinicie.

A alteração da resolução só acontecerá quando você estiver na tela agora.

Se você tiver vários locais com diferentes monitores / resoluções no mesmo conector, precisará colocar mais inteligência no seu script bash.

    
por Alex R 14.06.2013 / 15:02
2

Apenas pouco melhorou o script do Axlrod acima.

Tudo o que você precisa fazer é especificar qual monitor usar, e qual é o seu monitor de laptop (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
    
por Ikko 25.07.2014 / 07:25
1

Não esconda scripts ou arquivos de configuração que tenham a possibilidade de inutilizar sua tela de login!

Em vez disso, faça login e defina suas configurações de tela preferidas * e, em seguida, execute este comando:

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

Agora, sua resolução de login sempre refletirá as configurações do usuário com o qual você está conectado no momento.

* Não se esqueça de clicar em "Aplicar"

    
por Nathan J. Brauer 26.01.2015 / 21:35
1
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

depois no arquivo:

Section "Monitor"
    Identifier "VGA1"
    Option "PreferredMode" "1152x864"
EndSection

Salve e saia. Os valores foram obtidos do comando xrandr -q . VGA1 é o nome do meu conector e 1152x864 é o nome da resolução.

Isso funciona para o Xubuntu 16.04. Ele define uma resolução preferida e, para mim, permite definir a resolução da tela de login, em vez de ter como padrão a resolução mais alta suportada.

Modificado das respostas aqui

    
por Michael Faraday 29.05.2017 / 10:20
1

O que eu descobri ser útil foi uma postagem no site do guia do Ubuntu . Eu tentei tantas coisas no Ubuntu 11.10 e até tentei usar simplesmente o GNOME Classic. A resolução era sempre de 1024x768 e quando eu a defini manualmente para 1440x900 era "virtual", quer dizer, eu tive que rolar com o mouse para explorar toda a área de trabalho que estava além das dimensões reais da tela.

No Terminal, eu corri este comando:

sudo gedit /etc/default/grub

O editor de texto pode demorar um pouco para carregar. Uma vez carregado, eu editei a linha

GRUB_GFXMODE=1024x768

e alterou para:

GRUB_GFXMODE=1440x900

Lembre-se de executar update-grub para aplicar as alterações.

Depois disso, tentei reinstalar os drivers VESA (neste computador eu tenho uma GeForce 260 GTX). Eu sei que a melhor maneira é usar drivers oficiais da Nvidia, mas usá-los o problema foi sempre o mesmo ... Claro, eu acho que agora o desempenho será pior.

Então, verificando o painel de configurações do Nvidia X Server, verifiquei que minha resolução foi adicionada e, ao mudar para ela, ela fez a tela com a aparência correta. Na verdade, estou usando o Ubuntu 11.10, mas no GNOME Classic.

Sou novato em Linux, então espero ter escrito coisas decentes.

    
por Valinux 29.02.2012 / 09:08
0

O script de Axelrod é um pouco defeituoso, como um grep para 'connected' também pega todas as telas 'desconectadas' ... não é o que queremos ...

Além disso, usar o grep com o awk and tail, etc ... é um desperdício tortuoso, e eu sugeriria o seguinte a seguir. Além disso, em get_resolution, alteramos o código de retorno para 1, já que um código de retorno de zero é geralmente indicativo de uma falta de erros, portanto, usamos 1 se o primeiro parâmetro estiver ausente.

Em conclusão, ao instanciar a parte principal do script uma função, ela pode ser originada e executada a qualquer momento, se necessário, em uma biblioteca de funções, bem como obter o uso de variáveis locais, que não precisam não está definido.

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;
    
por blake private_last_name 20.05.2016 / 18:12
0

É assim que eu funcionei no Xubuntu 16.04.

Você precisa obter ao longo da string a resolução desejada. Isso está dentro do resultado do comando:

xrandr --verbose

Agora escolha a peça com a resolução desejada. Será algo parecido com:

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

A partir dos dados acima, você deve obter a string 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync .

Para encontrar o nome da sua saída, encontre uma linha semelhante também:

VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm

Aqui, minha saída se chama VGA1 .

Agora crie um script:

sudo gedit /usr/share/lightdmxrandr.sh

Em seguida, no arquivo, escreva o seguinte:

#!/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

Salve e feche o arquivo. Torne o script executável:

sudo chmod a+rx /usr/share/lightdmxrandr.sh

Crie um arquivo de configuração para chamar o script que acabou de criar.

sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf

dentro deste arquivo digite:

[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh

Salve e feche o arquivo. Reinicie e esperamos que a resolução escolhida esteja no seu login.

Em termos práticos, esta é a única maneira que funcionou para mim, mesmo que a recriação das resoluções existentes não seja lógica.

Resposta modificada desta pergunta .

nota

Uma maneira alternativa de obter a sequência de resolução longa é o programa cvt . Para obter uma string para resolução 1152x864, taxa de atualização 75,00:

cvt 1152 864 75

Isso me deu uma resolução ligeiramente diferente da resolução da minha área de trabalho e é o motivo pelo qual não incluí o método na resposta principal.

    
por Michael Faraday 28.05.2017 / 18:38
0

Se você estiver usando o grek GTK do LightDM, poderá executar xrandr -q para localizar os nomes de seus monitores e, em seguida, editar /etc/lightdm/lightdm-gtk-greeter e definir a propriedade active-monitor conforme descrito nos comentários dentro desse arquivo. Esta propriedade pode ter vários valores ordenados, incluindo #cursor para o monitor que atualmente mostra o cursor do mouse.

    
por Dzamo Norton 04.04.2018 / 04:59
0

Eu gosto de anexar o meu script que configura os monitores para uma das teclas multimídia no meu teclado que eu não uso de outra forma. Atualmente eu tenho o botão rotulado 'windows media center' forçar meus monitores em sua configuração preferida. Dessa forma, se você estiver voando às cegas e seus monitores não estiverem sincronizando com a resolução desejada, apenas amasse a tecla de atalho e tudo estará corrigido.

    
por cryptozoologist 17.04.2018 / 01:03
-1

“Preferred Screen Modes” pode ser o problema

Suponho que seu monitor informe a alta resolução de tela como sendo preferencial. Agora você gostaria de substituir essa preferência padrão . Veja minha resposta a uma pergunta muito semelhante para detalhes sobre como isso pode ser feito.

Eu tive o problema oposto: sempre obtive uma resolução de tela menor (1280x1024) do que a que eu queria (1600x1200). A correção que encontrei (e descrita na resposta vinculada) deverá ser aplicável analogamente ao seu problema.

    
por Chriki 12.10.2014 / 16:15
-2

Criei este script para torná-lo mais dinâmico (vários espaços de trabalho / monitores diferentes).

Apenas aborrecimento: quando você loga no lightdm, a tela ainda pisca como se quisesse mudar a resolução: s

    
por Leon 19.12.2011 / 07:56
-2

Eu tive o mesmo problema no meu MacBook Pro meados de 2014 (11,1) executando o Xenial. Eu tentei todas as soluções acima mencionadas em várias formas, mas invariavelmente faria com que o X entrasse no modo de baixo nível de falha de segurança (mas exibido na mesma resolução que eu queria que ele configurasse como padrão não menos.

Depois de muita discussão sobre os fóruns e pesquisas, descobri que eu havia esquecido a solução potencial mais simples e padrão: nomodeset. Isso resolveu o problema.

TL; DR: Não se esqueça de experimentar o nomodeset! Esp. em um MacbookPro 11,1.

    
por IanGa 21.02.2016 / 14:45