Настраивая свою систему на базе Gentoo, использующая драйвера Intel для работы с графикой, столкнулся с проблемой, что утилиты настройки яркости (xbacklight, например) не изменяют яркость экрана. В качестве простой альтернативы, предлагаю примитивный скрипт на Bash, который я использую в связке с i3wm.
¶ Как проверить работу intel_backlight?
Измените значение файла /sys/class/backlight/intel_backlight/brightness и посмотрите, сменится ли яркость экрана. Лучше предварительно посмотреть максимальное значение экрана и оттолкнуться от него
|
¶ Автоматизируем смену яркости
¶ Преднастройка доступа
В первую очередь, нужно дать доступ пользователю для модификации файла без ввода пароля. Минимальный вариант в случае использования sudo выглядит примерно так:
%brightness ALL=(ALL:ALL) NOPASSWD:/usr/bin/tee /sys/class/backlight/intel_backlight/brightness
Для работы примера выше потребуется группа brightness и нахождение пользователя в ней. Для своей рабочей машины я просто дополнил правило группы sudo.
%sudo ALL=(ALL:ALL) ALL,NOPASSWD:/usr/bin/tee /sys/class/backlight/intel_backlight/brightness
¶ Пишем скрипт смены
Мне был необходим скрипт, который сможет расчитать нужное значение яркости экрана и понизить его на некоторое количество процентов. Значение яркости будем хранить в файле, на вход принимать операцию (повышение/понижение яркости) и значение, на которое нужно будет изменить яркость экрана.
BACKLIGHT_FILE_PATH="/.config/i3/backlight_level"
[ ||
OPERATION=
DELTA=
Далее, логика за малым - получаем значение яркости из файла, максимальное значение яркости, от которого считаем значение процента яркости и после записываем все новые значения.
BACKLIGHT_FILE_PATH="/.config/i3/backlight_level"
[ ||
OPERATION=
DELTA=
OLD_BACKLIGHT=
MAX_BACKLIGHT=
NEW_BACKLIGHT=
|
И заключительное - защита от неверных значений яркости свыше 100 процентов и 1. При желании, подсветку экрана можно вовсе выключить, но я намеренно ограничиваю скрипт на 1 проценте.
BACKLIGHT_FILE_PATH="/.config/i3/backlight_level"
[ ||
OPERATION=
DELTA=
OLD_BACKLIGHT=
MAX_BACKLIGHT=
[ && NEW_BACKLIGHT_PERCENTAGE=100
[ && NEW_BACKLIGHT_PERCENTAGE=1
NEW_BACKLIGHT=
|
¶ Используем скрипт
Сам скрипт можно поместить в любую директорию в $PATH, например /usr/local/bin/backlight.sh и дать право выполнения при помощи команды chmod +x <путь к скрипту>. Примеры вызова:
Чтобы привязать выполнение скрипта в i3wm на нажатие кнопок яркости, добавьте следующие строки в конфиг-файл:
bindsym XF86MonBrightnessDown exec --no-startup-id backlight.sh - 10
bindsym XF86MonBrightnessUp exec --no-startup-id backlight.sh + 10