Como obter a resolução do monitor externo definida pelo xrandr para persistir

11

tl; dr

Meu laptop continua esquecendo a resolução correta do monitor externo conectado a ele. Como posso fazer a configuração "ficar"?

Detalhes

Eu tenho um laptop executando o Linux Mint conectado a um monitor externo da ViewSonic. Eu o configurei para usar o monitor externo como uma segunda tela (ou seja, não espelhada). Isso funcionou bem por algumas semanas.

De repente, o laptop não o reconheceu mais como um ViewSonic, quando não conhecia sua resolução ideal ( 1600 x 1200), permitindo apenas um máximo de 1028 x 768. 1 Isso não funcionou bem no meu laptop, que tem 1920 x 1200resolução.

Depois de muita frustração, encontrei esta resposta . Ajudou-me a corrigir o problema, da seguinte forma (a saída do cvtcomando sendo a modeline que foi usada no próximo comando):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Isso é exatamente o que eu estava desejando poder fazer, mas não podia fazer através da GUI. (Existem razões pelas quais eu ainda amo a linha de comando ...)

Isso mais uma vez funcionou bem por um tempo. No entanto, quando inicializei o computador hoje e entrei, recebi um pop-up na área de notificação com uma série de erros sobre os diferentes modos de tentativa que não estavam funcionando e o monitor externo foi desligado. Repeti os comandos acima e está funcionando novamente.

Eu tenho um cartão da nVidia. Tentei instalar o driver proprietário quando as coisas começaram a dar errado, mas nesse momento o monitor externo não era mais reconhecido, por isso estou de volta ao driver de código aberto. Eu não tenho um Xorg.confou um Xorg.conf.d, apenas um xorg.conf.failsafe.

Não quero repetir esses comandos toda vez que inicializo a máquina. Existe alguma maneira de eu conseguir que isso seja salvo no meu Xorg.confou algo assim? Faz vários anos desde que eu fiz muito com o X. Alguém pode me ajudar aqui?


1 Não consegui determinar por que isso aconteceu. Meu melhor palpite é uma atualização de driver problemática.

Kazark
fonte
1
Qual a placa gráfica que você esta usando? E se é ATI / AMD ou Nvidia, você está usando o driver proprietário ou o de código aberto? Você tem um /etc/X11/corg.confarquivo ou algo assim /etc/X11/corg.conf.d? Id, edite sua pergunta e adicione o conteúdo desses arquivos.
terdon
Por favor edite sua pergunta para adicionar informações adicionais, é difícil de ler e fácil de se perder nos comentários. Dito isto, sim, o xorg.conf não é mais necessário, agora essas coisas são tratadas pelo udev.
terdon
Basta olhar para a sua pergunta novamente e o que eu perdi quando escrevi minha resposta é que você tem um laptop. O que você pode querer procurar é escrever uma udevregra para chamar um script para executar o xrandr toda vez que o monitor for conectado ou desconectado, será muito melhor se o seu computador nem sempre estiver conectado ao monitor. Caso contrário, se você estiver feliz em instalá-lo no mesmo lugar o tempo todo, Xorg.confé o caminho a seguir.
Graeme

Respostas:

5

Tenho certeza de que há uma maneira melhor, acho que isso já está resolvido, udevmas se você souber que esses comandos o resolverão, você poderá transformá-los em um script:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Torne-o executável e adicione-o aos aplicativos de inicialização do ambiente de área de trabalho. Esta é provavelmente a melhor escolha se o seu DE fornecer a opção.


Se você não pode fazer o acima, como um hack sujo, você pode adicioná-los ao seu ~/.profile:

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi

O if [ ! -t 0 ]deve garantir que isso seja executado apenas na GUI e .profileseja fornecido pelo gerenciador de login do mint, pelo que me lembro.

Agora, você também deve poder usar, ~/.xsessionmas tive problemas com isso sendo ignorado. Muitas das abordagens mais antigas estão sendo substituídas e não tenho certeza de qual é o estado da arte.

terdon
fonte
Você não precisa usar o cvt 1600 1200, pois já usamos sua saída nas próximas duas linhas.
PraveenMax
4

Se você estiver usando o driver proprietário da Nvidia, nvdia-settingsdeve ser a ferramenta da GUI para configurar o Xorg.confarquivo. Ele deve ter seu próprio pacote no Linux Mint, portanto, a instalação seria tão simples quanto:

sudo apt-get install nvidia-settings

Isso deve colocar um ícone no seu menu em algum lugar, você pode executá-lo a partir daí (embora não tenha certeza de como você obtém permissões de root). Na linha de comando, acredito que você pode fazer:

sudo /usr/lib/nvidia/current/nvidia-settings

Se você deseja fazer a linha de comando, nvidia-xconfigparece ser a ferramenta a ser usada ( nvidia-xconfigpacote para mim). De qualquer forma, você normalmente obterá melhores resultados com o driver proprietário, se estiver configurado corretamente. Essas ferramentas geram pelo menos um Xorg.confarquivo razoável que você pode ajustar diretamente ou através de um desses programas.

Graeme
fonte