Eu suspeito que o problema é o resultado de um bug, já que não consigo encontrar outra causa. Pelo menos como solução alternativa, o script de plano de fundo abaixo pode ser usado.
O script faz o trabalho no meu sistema, mas você terá que tentar e ver. Se não funcionar no seu sistema, podemos mudar para xrandr
para mudar especificamente de por monitor , mas esta é a opção mais simples.
Recursos?
Sobre os recursos que você não precisa se preocupar, o script verifica uma vez a cada dez segundos se o tempo ocioso é excedido. Mesmo que eu consiga 10 vezes por segundo , a carga é praticamente nula.
#!/usr/bin/env python3
import subprocess
import time
t = 300
scr = True
while True:
time.sleep(10)
idle = int(subprocess.check_output("xprintidle").decode("utf-8").strip())/1000
if idle > t and scr == True:
subprocess.Popen(["xset", "dpms", "force", "off"])
scr = False
elif idle < t and scr == False:
subprocess.Popen(["xset", "dpms", "force", "on"])
scr = True
Como usar
-
O script precisa de
xprintidle
:sudo apt-get install xprintidle
-
Copie o script em um arquivo vazio, salve-o como
switchoff.py
-
Na cabeça do script, defina o tempo ocioso (em segundos) na linha:
t = 300
-
Desligue o seu "normal" desligue a tela após a idletime - configurações
-
Execute o script com o comando:
python3 /path/to/switchoff.py
-
Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar.
Adicione o comando:
/bin/bash -c "sleep 15 && python3 /path/to/switchoff.py"
EDITAR
Conforme solicitado em um comentário, abaixo da versão bash do mesmo script. Você ainda precisa instalar o xprintidle
.
#!/bin/bash
# --- set the idle time in seconds below
let "t = 300"
# ---
let "div = 1000"
t=$(($t * $div))
scr=true
while true
do
sleep 10
let "idle = "$(xprintidle)""
if [ "$idle" -gt "$t" ] && [ "$scr" = true ]
then
scr=false
xset dpms force off
elif [ "$idle" -lt "$t" ] && [ "$scr" = false ]
then
xset dpms force on
scr=true
fi
done
Nota
- Como não sabemos o que causa o comportamento em seu sistema, ainda precisamos descobrir se é necessário desativar especificamente suas telas por tela por
xrandr
. Você teria que tentar.