Ativar exibição via console tty?

Ativar exibição via console tty?

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

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

Responder1

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

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

xrandr --output <screenname> --auto

Acabei de testar no meu sistema (laptop, 15.10); desliguei minha tela e a reativei com sucesso com o atalho de teclado, executando o comando :)

alternativamente

Você poderia usar uma versão editada deeste roteiro. A versão abaixo (pequeno script em segundo plano, verifica uma vez a cada quatro segundos se uma tela externa está 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 e salve-o comoswitch_screens.py
  2. Na seção head do seu script, defina o nome do seuinternotela. 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, parecido com: VGA-1ou algo parecido.
  3. Teste - execute-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 desligar e desconectar novamente.

  4. Se tudo funcionar bem, adicione o comando abaixo aos Aplicativos de Inicialização: abra Dash > Aplicativos de Inicialização > Adicionar. Adicione o comando:

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

Efetue logout e login novamente. 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.

informação relacionada