Уменьшите яркость, когда неактивный в течение X минут - Рабочий стол

Я использую настольную станцию для запущения приложения для клиентов, я хочу уменьшить яркость после X минут на % Y (не выключающий экран). Я не могу получить это в своем рабочем столе. Я могу получить тусклую функциональную работу. Есть ли какое-либо решение??

2
задан 22 February 2017 в 14:00

1 ответ

Сценарий для потускнения экрана после x секунды

Сценарий ниже потускнеет экран после произвольного числа секунд, если компьютер будет неактивен (никакой вход от мыши или клавиатуры)

Сценарий

#!/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

Как использовать

  1. Потребности сценария xprintidle:

    sudo apt install xprintidle
    
  2. Скопируйте сценарий в пустой файл, сохраните его как dimscreens.py
  3. Тестовый прогон это от терминала, со временем простоя и желаемой яркостью (потускнели состояние) как аргументы:

    python3 /path/to/dimscreens.py 20 0.6
    

    где сценарий потускнел экран после 20 секунд к 60%-й яркости.

  4. Если все хорошо работает, добавьте к Приложениям Запуска: Тире> Приложения Запуска> Добавляет команду:

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

Объяснение

Простой способ установить яркость экрана для Вашей цели (например, 50%):

xrandr --output <screenname> --brightness 0.5

Сценарий использует xprintidle для периодического получения текущего времени простоя, сравнивая его с последним циклом:

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

Если или время превышает время набора или переходит назад для небездействия, сценарий принимает меры:

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

... установка или яркость к 1 (=100%) или тусклая яркость набора.

Более подробное объяснение на коде находится в сценарии.

Примечание:

Как это, сценарий потускнел все экраны. Если необходимо установить только один экран, все возможно.

2
ответ дан 2 December 2019 в 03:42

Другие вопросы по тегам:

Похожие вопросы: