Reduz o brilho quando inativo por X minuto - Desktop

2

Eu uso uma estação de trabalho para executar um aplicativo para clientes, eu quero reduzir o brilho após X minutos em Y% (não desligando a tela). Eu não posso conseguir isso na minha área de trabalho. Eu posso fazer a função sombria funcionar. Existe alguma solução?

    
por user2997418 22.02.2017 / 12:00

1 resposta

2

Script para escurecer a tela após x segundos

O script abaixo irá escurecer a tela após um número arbitrário de segundos se o computador estiver ocioso (sem entrada de mouse ou teclado)

O script

#!/usr/bin/env python3
import subprocess
import time
import sys

# read arguments from the run command: idel time (in seconds
dimtime = int(sys.argv[1])*1000
# brightness when dimmed (between 0 and 1)
dimmed = sys.argv[2]

def get(cmd):
    # just a helper function
    return subprocess.check_output(cmd).decode("utf-8").strip()

# get the connected screens
screens = [l.split()[0] for l in get("xrandr").splitlines()
           if " connected" in l]

# initial state (idle time > set time
check1 = False

while True:
    time.sleep(2)
    # get the current idle time (millisecond)
    t = int(get("xprintidle"))
    # see if idle time exceeds set time (True/False)
    check2 = t > dimtime
    # compare with last state
    if check2 != check1:
        # if state chenges, define new brightness...
        newset = dimmed if check2 else "1"
        # ...and set it
        for scr in screens:
            subprocess.Popen([
                "xrandr", "--output", scr, "--brightness", newset
                ])
    # set current state as initial one for the next loop cycle
    check1 = check2

Como usar

  1. O script precisa de xprintidle :

    sudo apt install xprintidle
    
  2. Copie o script em um arquivo vazio, salve-o como dimscreens.py
  3. Teste- execute-o a partir de um terminal, com o tempo ocioso e o brilho desejado (dim estado) como argumentos:

    python3 /path/to/dimscreens.py 20 0.6
    

    em que o script escurece a tela após 20 segundos para 60% de brilho.

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

    /bin/bash -c "sleep 10 && python3 /path/to/dimscreens.py 20 0.6"
    

Explicação

Uma maneira fácil de definir o brilho da tela para sua finalidade é (por exemplo, 50%):

xrandr --output <screenname> --brightness 0.5

O script usa xprintidle para periodicamente obter o tempo ocioso atual, comparando-o com o último ciclo:

while True:
    time.sleep(2)
    t = int(get("xprintidle"))/1000
    check2 = t > dimtime

Se o tempo exceder o tempo definido ou , o script entrará em ação:

if check2 != check1:
    newset = dimmed if check2 else "1"
    for scr in screens:
        subprocess.Popen([
            "xrandr", "--output", scr, "--brightness", newset
            ])

... define o brilho para 1 (= 100%) ou o brilho-brilho definido.

Uma explicação mais detalhada sobre o código está no script.

Nota

Como está, o script escurece todas as telas. Se você precisa definir apenas uma tela, tudo é possível.

    
por Jacob Vlijm 23.02.2017 / 17:04