Управление яркостью внешнего монитора с помощью программного обеспечения

Привет сообщество Ubuntu,

Я могу управлять яркостью моего DELL U2713HM, подключенного к DisplayPort, с помощью команды:

ddccontrol -p -r 0x10 -w 53

где в этом примере число 53 представляет уровень яркости (диапазон от 0 до 100). Но я не знаю, как связать команду с клавишами яркости на клавиатуре.

Я уже искал, но только нашел ответы на встроенные экраны ноутбуков. В /sys/class/backlight это папка acpi_video0 с некоторыми подпапками и файлами. Файл actual_brightness содержит число от 0 до 20, которое меняется при нажатии клавиш яркости.

Как вывести мой внешний монитор в список устройств в / sys / class / backlight?

PS: У меня установлена ​​новая версия Ubuntu 12.10 с интегрированной графикой Intel HD4000.

1 ответ

Решение

Я не думаю, что ваше желаемое решение получить ваш внешний монитор в /sys/class/backlight будет работать, но хорошая новость в том, что у вас может быть хорошая анимация яркости!

Пытаться

notify-send " " -i notification-display-brightness-low -h int:value:50 -h string:x-canonical-private-synchronous:brightness &

Теперь мы можем создать скрипт, который имитирует изменение яркости в Ubuntu:

#!/bin/bash
#get current brightness
presbright=$(ddccontrol -p | grep -A1 0x10 | tr -d '\n\t' | sed 's/.*value=\([^a-zA-Z]*\),.*/\1/')
#stepsize for the brightness change
stepsize=10

case "$1" in
        up)
          newbright=$(( ${presbright}+${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright
        ;;
        down)
          newbright=$(( ${presbright}-${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright            
        ;;
        status)
          echo $presbright
        ;;
        *)
          echo "Accepted arguments are: up, down, status."
        ;;
esac

exit 0

Как вы можете видеть, он фиксирует значения от 0 до 100. Теперь вы можете связать up а также down вызывает сценарий для некоторых сочетаний клавиш по вашему выбору с помощью Системных настроек> Клавиатура> Сочетания клавиш, как предложено fotomonster.


Заметки:
Я не знаю сколько времени ddccontrol -p занимает, если это слишком долго, вы также можете добавить sync опция для скрипта, которая сохраняет значение яркости монитора в файл. Тогда вместо получения текущей яркости от ddccontrol вы можете просто получить его из вашего файла, который должен быть намного быстрее. Конечно, вам нужно обновить up а также down призывает записать новую яркость в файл...


Сценарий, вдохновленный этим постом на archlinux.

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