Я использую настольную станцию для запущения приложения для клиентов, я хочу уменьшить яркость после X минут на % Y (не выключающий экран). Я не могу получить это в своем рабочем столе. Я могу получить тусклую функциональную работу. Есть ли какое-либо решение??
Сценарий ниже потускнеет экран после произвольного числа секунд, если компьютер будет неактивен (никакой вход от мыши или клавиатуры)
#!/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
Потребности сценария xprintidle
:
sudo apt install xprintidle
dimscreens.py
Тестовый прогон это от терминала, со временем простоя и желаемой яркостью (потускнели состояние) как аргументы:
python3 /path/to/dimscreens.py 20 0.6
где сценарий потускнел экран после 20 секунд к 60%-й яркости.
Если все хорошо работает, добавьте к Приложениям Запуска: Тире> Приложения Запуска> Добавляет команду:
/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%) или тусклая яркость набора.
Более подробное объяснение на коде находится в сценарии.
Как это, сценарий потускнел все экраны. Если необходимо установить только один экран, все возможно.