Como posso fazer a configuração esquerda / direita do monitor após uma reinicialização?

1

Toda vez que eu inicio meu PC, meu monitor mais à esquerda é configurado para ser o meu mais à direita. Ele funciona bem depois de eu alterá-lo nas configurações de exibição.

No entanto, sempre que eu reinicio meu PC, eles voltam à configuração errada. Existe um arquivo que eu possa editar que irá forçá-los a uma certa configuração?

    
por Backbounds 13.09.2015 / 15:49

2 respostas

0

As configurações do monitor nos segundos monitores, conforme definidas em Monitores , geralmente não são lembradas após a reinicialização.

Com o script abaixo, você pode definir qual dos seus monitores deve ser o esquerdo na inicialização. Ele irá ligar os dois monitores em uma configuração esquerda / direita.

Os comandos usados são comandos xrandr para posicionar as telas na área de abrangência das duas telas (veja o link em "Notas").

Script para configurar o monitor esquerdo / direito na inicialização

Como os comandos a serem executados dependem da situação atual e de quais telas você realmente quer ter à direita / esquerda, você precisará de um script para verificar suas telas, suas resoluções horizontais, criar os comandos corretos e automaticamente configurar a situação desejada na inicialização.

O script

#!/usr/bin/env python3
import subprocess
import sys

left = sys.argv[1]

# get the data on screens and resolutions, parsed from xrandr
current = [l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()]
# find the name(s), x-res of the screen(s)
screens = [
    (l[l.index("connected")-1], [s.split("x")[0] for s in l if s.count("+") == 2][0]) \
    for l in current if "connected" in l
    ]
# set up screen positions from left to right (important)
if left == screens[0][0]:
    subprocess.call(["xrandr", "--output", screens[0][0], "--pos", "0x0"])
    subprocess.call(["xrandr", "--output", screens[1][0], "--pos", screens[0][1]+"x0"])
elif left == screens[1][0]:
    subprocess.call(["xrandr", "--output",  screens[1][0], "--pos", "0x0"])
    subprocess.call(["xrandr", "--output",  screens[0][0], "--pos", screens[1][1]+"x0"])

Como usar

  1. Copie o script em um arquivo vazio, salve-o como setup_monitors.py
  2. Abra uma janela de terminal, execute o comando xrandr
  3. Na saída, duas linhas (se o segundo monitor estiver conectado) conterão os nomes das telas "conectadas". Os nomes se parecem com: DVI-I-1 ou VGA-0 . Faça um palpite que é o que você quer do lado esquerdo.
  4. Execute o script (de um terminal) pelo comando:

    python3 /path/to/setup_monitors.py <left_screen>
    

    por exemplo:

    python3 /path/to/setup_monitors.py DVI-I-1
    

    Teste o comando nas duas telas. As telas ficarão pretas por um segundo e serão configuradas.

  5. Se tudo funcionar bem, adicione um comando aos seus aplicativos de inicialização: escolha Traço > Aplicativos de inicialização > Adicione o comando

    /bin/bash -c "sleep 15 && python3 /path/to/setup_monitors.py DVI-I-1"
    

Nota

  • O sono é especificamente necessário para os comandos xrandr quando um segundo monitor está envolvido. Se o script (na verdade, os comandos dentro dele) forem executados cedo demais, a área de trabalho ainda não estará totalmente carregada e os comandos falharão ou perderão o destino.
  • Veja também aqui para mais informações sobre o que o (s) comando (s) dentro do script está fazendo.
por Jacob Vlijm 13.09.2015 / 20:06
0

A solução de Jacob funciona, mas existem algumas alternativas adicionais. Você poderia colocar os comandos xrandr no seu arquivo .xsessionrc , para que eles sejam executados na inicialização. Você também pode escrever uma entrada xorg.conf para definir seus monitores explicitamente à esquerda / direita um do outro. Eu não estou no meu PC, então infelizmente estou com falta de detalhes no momento, mas voltarei para preenchê-los mais tarde, se eu tiver tempo. Nesse meio tempo, valeria a pena ler os arquivos xrandr e xorg.conf em geral; você pode descobrir uma solução melhor do que o que acabo colocando aqui de qualquer maneira. ^ _ ^

EDIT: OK, finalmente estou chegando a esse ponto.

Usando xrandr e ~/.xsessionrc

O utilitário xrandr é usado para obter e definir informações sobre suas exibições. Digite xrandr sozinho na linha de comando e você verá uma lista de todos os seus displays e os "modos" que eles suportam. Aqui está um exemplo de saída correspondente a um antigo LCD Dell 4: 3.

DP2 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024      60.0*+   75.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  

Você adicionaria modos a eles se a resolução do seu monitor não estivesse correta, etc., mas seu problema é o posicionamento. xrandr fornece parâmetros simples --left-of <output> e --right-of <output> que permitem ditar onde suas exibições se encontram em relação umas às outras.

Digamos que seus monitores se identifiquem como FOO1 e FOO2 . (Eles nunca serão; isso é apenas um exemplo.) Se você quiser que FOO1 esteja sempre à esquerda de FOO2 , insira:

xrandr --output FOO1 --left-of FOO2

ou

xrandr --output FOO2 --right-of FOO1

Digitar isso na linha de comando fará imediatamente a mudança para a sua sessão atual. Inserir a mesma linha no seu arquivo ~/.xsessionrc tornará a mudança efetiva toda vez que você iniciar o X.

Usando xorg.conf

Sua outra alternativa é escrever uma entrada xorg.conf que determinará a configuração de exibição como parte do processo de inicialização do X. Se você estiver no Ubuntu, isso provavelmente fará parte de um arquivo em um diretório xorg.conf.d , em /usr/share/X11/xorg.conf.d ou /etc/X11/xorg.conf.d . Portanto, se você ainda não tiver um, crie um arquivo de configuração para direcionar seus adaptadores de vídeo e monitores. Eu chamei o meu 01-monitors.conf para garantir que ele foi executado primeiro. Ao reutilizar o exemplo anterior com FOO1 à esquerda de FOO2 , podemos configurar a mesma preferência aqui com uma seção Monitor config.

Section "Monitor"
    Identifier "FOO1"
    Option "LeftOf" "FOO2"
EndSection

Observe que Identifier é o mesmo que você obteria de xrandr .

Leitura Adicional

A página man do sistema de configuração xorg.conf está disponível em link

    
por zerobandwidth 13.09.2015 / 21:30