Регулировка яркости на настольном компьютере
У меня есть Ubuntu 12.10
Мне нужно приложение / программное обеспечение, которое может увеличивать и уменьшать мою яркость.
Я знаю, что могу сделать это через монитор компьютера, но я этого не хочу. Я хочу контролировать это через программное обеспечение.
Я лично не могу найти приложение по этому вопросу.
Я знаю, что это возможно, потому что ОС имеет эффекты Fading перед хранителями экрана.
Я хочу контролировать яркость через программное обеспечение для настольных ПК.
7 ответов
Помимо элементов управления на вашем мониторе, вы можете сделать это через апплет драйверов, если вы используете проприетарные драйверы от nvidia или ati или можете использовать xbacklight из центра программного обеспечения.
Установите контроллер яркости из своего PPA
sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update
sudo apt install brightness-controller
Картина: Контроллер яркости
Теперь вы можете регулировать яркость с помощью ползунка.
Использовать протокол DDC:
sudo apt-get install ddccontrol
sudo modprobe i2c-dev
sudo ddccontrol -p
Обратите внимание на устройство, например, "/dev/i2c-2"
Установите разрешения (при необходимости):
sudo chmod a=+rw /dev/i2c-2
В разделе "Яркость и контрастность" адрес управления в моем случае равен "0x10".
ddccontrol dev:/dev/i2c-2 -r 0x10 -w 70
70 - это значение яркости, которое нужно установить.
Если вы хотите запросить:
ddccontrol dev:/dev/i2c-2 -r 0x10
Вы можете играть с контрастом и другими параметрами; запишите их адреса в
ddccontrol -p
команда.
Скопируйте сценарий bash ниже в файл с именем
bright
Затем отметьте его исполняемым файлом
chmod a+x bright
Bash скрипт
#!/bin/bash
MON="DP-1-1" # Discover monitor name with: xrandr | grep " connected"
STEP=5 # Step Up/Down brightnes by: 5 = ".05", 10 = ".10", etc.
CurrBright=$( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
CurrBright="${CurrBright##* }" # Get brightness level with decimal place
Left=${CurrBright%%"."*} # Extract left of decimal point
Right=${CurrBright#*"."} # Extract right of decimal point
MathBright="0"
[[ "$Left" != 0 && "$STEP" -lt 10 ]] && STEP=10 # > 1.0, only .1 works
[[ "$Left" != 0 ]] && MathBright="$Left"00 # 1.0 becomes "100"
[[ "${#Right}" -eq 1 ]] && Right="$Right"0 # 0.5 becomes "50"
MathBright=$(( MathBright + Right ))
[[ "$1" == "Up" || "$1" == "+" ]] && MathBright=$(( MathBright + STEP ))
[[ "$1" == "Down" || "$1" == "-" ]] && MathBright=$(( MathBright - STEP ))
[[ "${MathBright:0:1}" == "-" ]] && MathBright=0 # Negative not allowed
[[ "$MathBright" -gt 999 ]] && MathBright=999 # Can't go over 9.99
if [[ "${#MathBright}" -eq 3 ]] ; then
MathBright="$MathBright"000 # Pad with lots of zeros
CurrBright="${MathBright:0:1}.${MathBright:1:2}"
else
MathBright="$MathBright"000 # Pad with lots of zeros
CurrBright=".${MathBright:0:2}"
fi
xrandr --output "$MON" --brightness "$CurrBright" # Set new brightness
# Display current brightness
printf "Monitor $MON "
echo $( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
- + Изменить
MON="DP-1-1"
к имени вашего монитора, т.е.MON="eDP-1-1"
- + Изменить
STEP=5
к вашему значению шага, напримерSTEP=2
менее заметен
Вызовите сценарий с помощью:
bright Up
или жеbright +
увеличить яркость на ступенчатое значениеbright Down
или жеbright -
для пошагового уменьшения яркостиbright
(без параметров), чтобы получить текущий уровень яркости
Надеюсь, команды bash / shell можно легко найти в Google для обучения, но если есть какие-либо вопросы, не стесняйтесь спрашивать:)
Через 8 минут после публикации ответа мне пришло в голову, что я мог бы использовать
bc
для математики с плавающей запятой и сэкономил ~10 строк кода и много времени из 1,5 часов, чтобы написать это пожимает плечами.
Яркость можно регулировать с помощью протокола DDC/IC. Программное обеспечение называется ddccontrol
и можно найти здесь. Для примера см. Мой вопрос.
Я могу контролировать свой монитор (яркость, контрастность, режим ожидания, ...) с помощью программного обеспечения. Но я могу просто отправить абсолютные значения яркости на монитор. Я хотел бы увеличить / уменьшить яркость с помощью специальных клавиш клавиатуры. Любая идея? У меня уже есть открытый вопрос здесь.
Яркость в большинстве случаев управляется аппаратно с лампами на экране. На рабочем столе я не уверен, возможно ли это на старых экранах. Могу ли я получить подробную информацию о вашем экране?
Простейший баш...
#!/usr/bin/bash
# brightness [+-*/]f.f
set -f
MONITOR="$(xrandr --listactivemonitors | sed -n '/\*/p')"
MONITOR="${MONITOR##* }"
Brightness() { # current brightness value
xrandr --verbose \
| sed -nE "/^$MONITOR/ba;d
:a;s|[[:space:]]*Brightness:[[:space:]]*||p;tb;n;ba
:b;q"
}
Brightness_set() { # VALUE
xrandr --output "$MONITOR" --brightness "$1"
}
[[ 0 -eq "$#" ]] \
&& printf '%s\n' "$MONITOR Brightness: $(Brightness)" \
&& exit
! [[ "$1" =~ ^([-+*/]?)([0-9]+\.?[0-9]*|\.[0-9]+)$ ]] \
&& >&2 printf '%s\n' "!!! USAGE: $(basename "${BASH_SOURCE[0]}") ^([-+*/]?)([0-9]+\.?[0-9]*|\.[0-9]+)$" \
&& exit
if [[ "${BASH_REMATCH[1]}" ]]; then
Brightness_set "$(bc <<< "$(Brightness)$1")"
else
Brightness_set "$1"
fi
Привязка клавиш по вашему желанию.