Como posso desligar automaticamente a tela interna quando uma tela externa é conectada?

3

Usuário do Windows aqui, pulando no trem do Ubuntu. Atualmente usando 14.04 . Eu tenho uma TV que eu uso para ver filmes e coisas do tipo, conectada via HDMI. Eu gostaria de realizar o seguinte comportamento, mas ainda não descobri

  • Na conexão HDMI, não exiba nada no meu laptop, apenas exiba na TV (automaticamente)
  • Na desconexão HDMI, exiba meu laptop

Apenas mexendo nas configurações Eu posso conseguir isso, mas é extremamente manual. Estou faltando alguma coisa?

Muito obrigado!

    
por Stephane 28.02.2016 / 09:46

2 respostas

6

Desliga automaticamente a tela interna se uma tela externa estiver conectada

Isso pode ser feito facilmente executando um pequeno script de segundo plano (iniciado automaticamente na inicialização (login).

O que faz

O script irá desligar automaticamente a tela interna se a sua TV (ou qualquer outra tela secundária) estiver conectada. Se você quer que ele trabalhe apenas para uma tela externa específica , por favor mencione.

O script

#!/usr/bin/env python3
import subprocess
import time
# --- set your internal screen below (the example is my primary screen)
internal = "DVI-I-1"
#---

# don't change anything below
scr_info1 = 0

while True:
    time.sleep(4)
    # read the current screen setup from xrandr
    get_screens = subprocess.check_output("xrandr").decode("utf-8").splitlines()
    scr_data = [l for l in get_screens if " connected " in l]
    # count the number of connected screens
    scr_info2  = len(scr_data)
    # if the number of connected screens changes, 
    # switch off the internal one if there are two screens
    if scr_info2 != scr_info1:
        if scr_info2 == 2:
            ext = [s.split()[0] for s in scr_data if not internal in s][0]
            subprocess.Popen(["xrandr", "--output", internal, "--off", "--output", ext, "--auto"])
    scr_info1 = scr_info2

Como configurar

  1. Copie o script abaixo em um arquivo vazio, salve-o como switch_screens.py
  2. Na seção principal do seu script, defina o nome da tela interna . Para descobrir, abra uma janela de terminal e execute o comando xrandr (nenhuma tela externa conectada) A linha com "conectado" mostra o nome da sua tela na primeira string, parecida com: VGA-1 ou algo parecido .
  3. Teste-o abrindo uma janela de terminal e digite o comando:

    python3 /path/to/switch_screens.py
    

    Enquanto o script é executado, conecte sua TV, espere a tela interna alternar e desconectar novamente.

  4. Se tudo funcionar bem, adicione o comando abaixo para Startup Applications: open Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    /bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
    

Efetue o logout e a devolução. Agora, sua tela interna será desligada automaticamente se uma tela externa estiver conectada.

    
por Jacob Vlijm 28.02.2016 / 17:36
2

O Unity normalmente lembra as configurações como você descreve. Isso significa que, se você ativar sua TV uma vez e desativar a tela do laptop, isso deverá ser feito da próxima vez que você conectar sua TV novamente. Além disso, se você desconectar sua TV, ela deve voltar para a Laptopsreen.

Como você diz que isso não aconteceu, você pode criar um pequeno arquivo de lote que ative a segunda tela se estiver conectado e desative a tela do laptop. Isso está vinculado a essa pergunta

    
por Kais3n 28.02.2016 / 12:01

Tags