ОС: Ubuntu - 18.04 LTS
У меня в каталоге есть 2 символические ссылки /sys/class/backlight/
.
acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/
nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/
Горячие клавиши яркости изменяют значение acpi_video0/brightness
. Но это фактически не изменяет яркость дисплея.
Но ручное изменение значения nv_backlight/brightness
фактически изменяет яркость дисплея.
Итак, привязка горячих клавиш к nv_backlight
вместо acpi_video0
решит мою проблему, но я не знаю, как это сделать.
Редактировать: Всплывающий ползунок прогресс-бар появляется на экране при нажатии клавиши Fn для регулировки яркости (горячие клавиши).
Редактировать:
Вход:
cat /sys/class/backlight/nv_backlight/max_brightness
Выход:
100
Вход:
cat /sys/class/backlight/nv_backlight/actual_brightness
Вывод (это значение автоматически изменится на то же значение, которое я вручную задал
/sys/class/backlight/nv_backlight/brightness
):10
Вход:
cat /sys/class/backlight/acpi_video0/max_brightness
Выход:
15
решение1
Bash-скриптredirect-brightness
Ваша проблема в том, что функциональные клавиши для увеличения/уменьшения яркости обновляются /sys/class/backlight/acpi_video0/brightness
вместо/sys/class/backlight/nv_backlight/brightness
Первоначальный запрос был перехватывать функциональные клавиши и использовать их для управления nv_backlight
драйвером. Проблема в следующем:
- Сложные
udev
сценарии - Никаких всплывающих уведомлений, отображающих яркость без сложных скриптов Python.
Решение состоит в том, чтобы использовать inotify
для отслеживания изменений в acpi_video0
. Затем вычислить процент яркости и применить этот же процент к nv_backlight
.
В скрипте bash ниже необходимо установить:
WatchDriver="/sys/class/backlight/acpi_video0/brightness"
PatchDriver="/sys/class/backlight/nv_backlight/brightness"
Поместите скрипт /usr/local/bin
и сделайте его исполняемым с помощью:
chmod a+x /usr/local/bin/redirect-brightness
Сначала запустите скрипт из командной строки, используя
redirect-brightness -l
Если возникла проблема, проверьте файл журнала, используя:
cat /tmp/redirect-brightness.log
Если все работает хорошо, добавьте redirect-brightness
в автозагрузку приложения.
redirect-brightness
bash-скрипт
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 || \
{ echo >&2 "'inotifywait' required but it's not installed. Aborting."; \
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'"; \
exit 1; }
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'"; \
echo >&2 "does not exist. Did you spell it correctly? Aborting.'"; \
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'"; \
echo >&2 "does not exist. Did you spell it correctly? Aborting.'"; \
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () {
# Calculate watch current percentage
WatchAct=$(cat $WatchDriver/actual_brightness)
WatchPer=$(( WatchAct * 100 / WatchMax ))
[[ $fLogFile == true ]] && echo WatchAct: $WatchAct WatchPer: $WatchPer >> $LogFile
# Reverse engineer patch brightness to set
PatchAct=$(( PatchMax * WatchPer / 100 ))
echo $PatchAct | sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
}
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] && \
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Оригинальный ответ 11 июня 2018 г.
Работа в процессе Ответ
У многих пользователей nVidia возникли похожие проблемы в Ubuntu 18.04:
- Яркость на ноутбуке MSI GT72VR в Ubuntu 18.04 с NVIDIA GTX 1060 Mobile не работает
- компьютер не выходит из спящего режима и не может изменить яркость
- Регулировка яркости отсутствует при использовании драйверов Nvidia, но появляется снова с X.Org
- Xubuntu 18.04: заставить клавиши яркости Fn работать с /sys/class/backlight/nv_backlight/
- Как изменить драйвер подсветки в lubuntu
- Яркость на ноутбуке MSI GT72VR в Ubuntu 18.04 с NVIDIA GTX 1060 Mobile не работает
- Проблема с дисплеем NVIDIA, связанная с регулировкой яркости и воспроизведением видео
- Невозможно изменить яркость экрана
- Яркость экрана ноутбука нельзя отрегулировать ни кнопками, ни ползунком. Редактировать
Перед написанием сценария
Я могу написать скрипт, имитирующий изменения в /acpi_video и заполняющий /nv_backlight, но прежде чем я это сделаю, попробую сделать следующее:
- Редактировать
/etc/default/grub
. - Находить
quiet splash
- Добавить за всплеск:
acpi_backlight=vendor
- Сохраните файл
- Бегать
sudo update-grub
Согласно этому ответу, это должно вам подойти:Xubuntu 18.04: заставить клавиши яркости Fn работать с /sys/class/backlight/nv_backlight/
Уэйланд
Яркость не работает под Wayland. Убедитесь, что вы ее не используете. Смотрите:Яркость экрана ноутбука нельзя отрегулировать ни кнопками, ни ползунком. Редактировать