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

11

Привет сообщество 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.

Remi
источник
Когда указанная вами команда работает для вашего внешнего монитора, вы можете установить пользовательские сочетания клавиш в «Параметры системы»> «Клавиатура»> «Сочетания клавиш».
Тонгпу
Это правильно, но тогда я могу просто отправить две команды (темная / яркая), и я бы проигнорировал встроенный переключатель яркости Ubuntu с хорошей анимацией яркости.
реми
Можете ли вы опубликовать ссылку с выводом ddccontrol -p, я думаю о решении ...
Герхард Бургер
Надеюсь, что это поможет вам: pastebin.com/L7Y7pRZe
remi

Ответы:

6

Я не думаю, что желаемое решение по подключению внешнего монитора /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 .

Герхард Бургер
источник
работает очень хорошо, большое спасибо. Это именно то, что я хотел. Теперь вся система хорошо интегрирована, как iMac, но все еще настраивается.
реми
Еще нужно немного помочь, привязав
remi