Отображение событий ACPI для кнопок яркости на Lenovo Yoga X1 v2

Я установил Ubuntu Gnome 17.04 на свой новый Lenovo Yoga X1 (версия 2), и кнопки яркости не работают из коробки. Я прошел шаги (ниже), которые я считал необходимыми для сопоставления этих ключей с вызовами xrandr, но ничего не происходит, даже если я регистрирую событие сопоставления клавиш, которое было успешно перехвачено. Если я запускаю зарегистрированную команду вручную, яркость меняется соответствующим образом. Чего мне не хватает в маршруте ACPI?

Сначала посмотрите, какие события ACPI посылают кнопки яркости

$ acpi_listen
video/brightnessdown BRTDN 00000087 00000000
video/brightnessup BRTUP 00000086 00000000

Затем создайте определения событий

$ cat yoga-brightness-up 
event=video/brightnessup BRTUP 00000086
action=/etc/acpi/yoga-brightness.sh up

$ cat yoga-brightness-down 
event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/yoga-brightness.sh down

Определите сценарий действия

$ cat /etc/acpi/yoga-brightness.sh
#!/bin/sh

# Where the backlight brightness is stored
BR_DIR="/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/"

test -d "$BR_DIR" || exit 0

MIN=0
MAX=$(cat "$BR_DIR/max_brightness")
VAL=$(cat "$BR_DIR/brightness")

if [ "$1" = down ]; then
    VAL=$((VAL-71))
else
    VAL=$((VAL+71))
fi

if [ "$VAL" -lt $MIN ]; then
    VAL=$MIN
elif [ "$VAL" -gt $MAX ]; then
    VAL=$MAX
fi

PERCENT=`echo "$VAL / $MAX" | bc -l`

#export XAUTHORITY=/home/ivo/.Xauthority  # CHANGE "ivo" TO YOUR USER
#export DISPLAY=:0.0
export XAUTHORITY=/home/jorvis/.Xauthority
export DISPLAY=:0

echo "xrandr --output eDP-1 --brightness $PERCENT" > /tmp/yoga-brightness.log
xrandr --output eDP-1 --brightness $PERCENT

echo $VAL > "$BR_DIR/brightness"

Перезапустите acpid

$ sudo /etc/init.d/acpid reload

Успех должен записать в журнал яркости

$ rm /tmp/yoga-brightness.log

[нажмите кнопку уменьшения яркости три раза]

$ sudo cat /tmp/yoga-brightness.log 
xrandr --output eDP-1 --brightness .76603773584905660377

Лог написан правильно, так же как и значение яркости:

$ cat /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness
759

Ничего не происходит на реальном дисплее, хотя. Это работает, хотя, если я вручную запустить команду, которая была зарегистрирована для запуска.

$ xrandr --output eDP-1 --brightness .76603773584905660377

1 ответ

И после прочтения этого поста я снова заметил часть ENV и дважды проверил ее. Проблема была в установке $XAUTHORITY в скрипте. Было нормально указать на мой ~/.Xauthority (которого по умолчанию не было), но мне нужно было сделать это:

$ ln -s /run/user/1000/gdm/Xauthority ~/.Xauthority

После этого кнопки яркости сработали.

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