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

Здравствуйте, сообщество 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.

10
задан 28 November 2012 в 01:01

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 .

0
ответ дан 28 November 2012 в 01:01

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

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