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
- Copie o script acima em um arquivo vazio e salve-o como
switch_screens.py
- 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-1
ou algo parecido. 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.
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.