Регулировка яркости на настольном компьютере

У меня есть 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

Снимок экрана 1

Картина: Контроллер яркости

Теперь вы можете регулировать яркость с помощью ползунка.

Использовать протокол 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

Привязка клавиш по вашему желанию.

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