Ativar exibição via console tty?

1

Eu tenho um script xrandr personalizado que ativa meus monitores externos e desativa o monitor do meu laptop. Quando eu desconecto meu monitor externo, não consigo ativar o monitor porque minha tela está em branco.

Adoraria poder acessar meu console tty (ctrl-alt-f1) e acionar xrandr para continuar (por exemplo, xrandr --output eDP1 --auto ). Executando isso no meu tty diz "Não é possível abrir a tela". Alguma dica de como eu posso fazer isso?

    
por Justin Abrahms 25.03.2016 / 19:20

1 resposta

1

Não há necessidade de entrar em console, você pode conseguir o mesmo adicionando um atalho de teclado personalizado para reativar sua tela interna.

Escolha as configurações do sistema > Teclado > Atalhos > Atalhos personalizados, clique no sinal + e adicione o comando a um atalho de sua escolha:

xrandr --output <screenname> --auto

Apenas testei no meu sistema (laptop, 15.10); desliguei minha tela e reativei-a com o atalho do teclado, executando o comando:)

Alternativamente

Você pode usar uma versão editada do script . A versão abaixo (pequeno script de fundo, está verificando uma vez a cada quatro segundos se uma tela externa estiver conectada) garante que sua tela interna esteja ligada

#!/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"])
        else:
            subprocess.Popen(["xrandr", "--output", internal, "--auto"])

    scr_info1 = scr_info2

Como configurar

  1. Copie o script acima 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 tela externa, 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 o login. Agora, sua tela interna será desligada automaticamente se uma tela externa estiver conectada, reativando-a se você desconectar.

O script não adiciona nenhuma carga perceptível ao seu sistema.

    
por Jacob Vlijm 25.03.2016 / 21:27