Monitor múltiplo espelhado como padrão

0

Eu tenho um laptop com placa gráfica Intel e em casa eu conecto em um monitor externo. Existe uma maneira de ter monitores espelhados por padrão? Agora, toda vez que eu inicializo, eu preciso reconfigurar dessa maneira.

obrigado!

    
por arrubiu 02.01.2015 / 14:07

1 resposta

3

1. Limpo e simples

Acho que o mais fácil e mais limpo seria:

  1. Descubra os dois nomes de tela com a ajuda de xrandr (procure a string "connected")
  2. Abra as configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    xrandr --output <screen_name1> --auto --same-as <screen_name2>
    

    Para uma combinação de teclas à sua escolha.

Dessa forma, você só precisa pressionar a combinação de teclas para ativar as telas espelhadas.

2. Sem ter que procurar o nome de tela

Um pouco mais sofisticado seria fazer o mesmo, mas deixar um script descobrir os dois nomes de tela:

#!/usr/bin/env python3
import subprocess

output = subprocess.check_output(["/bin/bash", "-c", "xrandr"]).decode("utf-8").split()
connected = [output[i-1] for i in range(len(output)) if output[i] == "connected"]
command = "xrandr --output "+connected[0]+" --auto --same-as "+connected[1]
subprocess.Popen(["/bin/bash", "-c", command])

Salve o script como mirror.py , execute-o pelo comando:

python3 /path/to/mirror.py

sob uma combinação de teclas, como na primeira opção.

3. Totalmente automático

Se você quer que tudo seja feito sem qualquer ação do seu lado, execute o script abaixo em segundo plano. Ele verifica a cada 5 segundos se um segundo monitor está conectado e define como espelhado em caso afirmativo.

O script

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

def screens():
    output = subprocess.check_output(["/bin/bash", "-c", "xrandr"]).decode("utf-8").split()
    return [output[i-1] for i in range(len(output)) if output[i] == "connected"]

todo = True

while True:
    scr = screens()
    if len(scr) == 2 and todo == True:
        command = "xrandr --output "+scr[0]+" --auto --same-as "+scr[1]
        subprocess.Popen(["/bin/bash", "-c", command])
        todo = False
    elif len(scr) == 1 and todo == False:
        todo = True
    time.sleep(5)

Como usar

  • Copie o script em um arquivo vazio, salve-o como mirror_screen.py
  • Teste-o reiniciando seu laptop (tela desconectada)
  • Execute o script pelo comando:

    python3 /path/to/mirror_screen.py
    
  • Conecte o segundo monitor para ver se ele alterna automaticamente para espelhado.

  • Se tudo funcionar bem, adicione o comando (acima) aos seus aplicativos de inicialização:
    Dash > Aplicativos de inicialização > Adicionar
por Jacob Vlijm 02.01.2015 / 14:26