Lenovo ThinkPad X1 Yoga OLED Яркость
Я бегу 16.04 на моем X1 Yoga OLED.
Я не могу изменить яркость экрана вообще, кажется, что он все время работает на максимальной яркости. Я пробовал:
- Fn+F5/F6
xbacklight -set 50
(и 100, и 0, и 20, ...)/xbacklight -dec 10
Я использую GNOME Shell в Xorg.
Надеюсь, полезный список программного обеспечения и версий, скажите мне в комментариях, если вам нужно больше.
gnome-shell 3.18.5-0ubuntu0.1
tlp 0.9-1~xenial
tp-smapi 0.41-1
5 ответов
Нет подсветки с OLED-экраном. Так что нормальные методы не работают. Отрегулируйте яркость экрана с помощью:
xrandr --output eDP1 --brightness .5 # dim to half
xrandr --output eDP1 --brightness 1 # no dimming
число может быть любым от 0 до 1
Я искал способ запуска команды xrandr при нажатии кнопок яркости. Для этого я создал пользовательские события acpi (подробнее об этом здесь: https://help.ubuntu.com/community/LaptopSpecialKeys). Это все еще хак и не правильное решение, но оно работает для меня:
Я создал три файла, /etc/acpi/events/yoga-bright-up:
event=video/brightnessup BRTUP 00000086
action=/etc/acpi/yoga-brightness.sh up
и / etc / acpi / events / йога-яркость-вниз:
event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/yoga-brightness.sh down
и, наконец, /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
echo "xrandr --output eDP-1 --brightness $PERCENT" > /tmp/yoga-brightness.log
xrandr --output eDP-1 --brightness $PERCENT
echo $VAL > "$BR_DIR/brightness"
который в значительной степени вдохновлен файлом asus-keyboard-backlight.sh и информацией на https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 для корневого каталога xrandr проблема с доступом
Не забудьте перезапустить acpi, набрав
sudo service acpid reload
Надеюсь, это поможет;-)
Плавный контроль яркости
(Обновление: я загрузил сценарий предоставления, чтобы автоматизировать это на Github.)
Этот сценарий основан на обходном пути Ivo Blöchliger. Я бы не хотел, чтобы мой дорогой ноутбук выглядел дешево, поэтому мне нужен плавный переход между значениями яркости, чтобы конкурировать с моими коллегами, не работающими в Linux.
Он создан для Linux Mint 18.3 и Ubuntu 16.04.3 и протестирован на Lenovo ThinkPad X1 Yoga (2nd Gen) с OLED-панелью.
/etc/acpi/events/oled-brightness-up
(644):
event=video/brightnessup BRTUP 00000086
action=/etc/acpi/oled-brightness.sh up
/etc/acpi/events/oled-brightness-down
(644):
event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/oled-brightness.sh down
/etc/acpi/oled-brightness.sh
(755):
#!/bin/bash
# Smooth brightness control
# Change "redsandro" in the line below to your username
export XAUTHORITY=/home/redsandro/.Xauthority
export DISPLAY=:0.0
OLED_BR=`xrandr --verbose | grep -i brightness | cut -f2 -d ' '`
CURR=`LC_ALL=C /usr/bin/printf "%.*f" 1 $OLED_BR`
MIN=0
MAX=1.2
if [ "$1" == "up" ]; then
VAL=`echo "scale=1; $CURR+0.1" | bc`
else
VAL=`echo "scale=1; $CURR-0.1" | bc`
fi
if (( `echo "$VAL < $MIN" | bc -l` )); then
VAL=$MIN
elif (( `echo "$VAL > $MAX" | bc -l` )); then
VAL=$MAX
else
if [ "$1" == "up" ]; then
for I in {1..10..1}; do xrandr --output eDP1 --brightness `echo "scale=2; $I/100+$CURR" | bc` 2>&1 >/dev/null | logger -t oled-brightness; done
else
for I in {1..10..1}; do xrandr --output eDP1 --brightness `echo "scale=2; $CURR-$I/100" | bc` 2>&1 >/dev/null | logger -t oled-brightness; done
fi
fi
# Set Intel backlight to fake value
# to sync OSD brightness indicator to actual brightness
INTEL_PANEL="/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/"
if [ -d "$INTEL_PANEL" ]; then
PERCENT=`echo "scale=4; $VAL/$MAX" | bc -l`
INTEL_MAX=$(cat "$INTEL_PANEL/max_brightness")
INTEL_BRIGHTNESS=`echo "scale=4; $PERCENT*$INTEL_MAX" | bc -l`
INTEL_BRIGHTNESS=`LC_ALL=C /usr/bin/printf "%.*f" 0 $INTEL_BRIGHTNESS`
echo $INTEL_BRIGHTNESS > "$INTEL_PANEL/brightness"
fi
Удалите все предыдущие обработчики яркости и, наконец, сделайте sudo service acpid reload
I needed a few tweaks to make @Redsandro solution work on my ubuntu 18.10 install.
Specifically, the Xauth root workaround doesn't work (thanks for mentioning that @Ivo B!) as the .Xauthority
file no longer exists. To find the new file location:
$ xauth info
Authority file: /run/user/1000/gdm/Xauthority
Therefore we change the relevant line:
-OLD: export XAUTHORITY=/home/redsandro/.Xauthority
+NEW: export XAUTHORITY=/run/user/1000/gdm/Xauthority
Additionally, I also had to change eDP1
в eDP-1
,
In total this led to changes on three lines.
Дополнительные примечания
In order to debug, I used
rui@chaiX1YG2:/var/log$ $ tail -f /var/log/syslog | grep oled-br
eg for the two respective errors I found (Xauthority & eDP)
Jan 16 13:03:01 chaiX1YG2 oled-brightness: Can't open display :0.0
Jan 16 13:03:01 chaiX1YG2 oled-brightness: No protocol specified
Jan 16 13:23:46 chaiX1YG2 oled-brightness: warning: output eDP1 not found; ignoring
Jan 16 13:23:46 chaiX1YG2 oled-brightness: xrandr: Need crtc to set gamma on.
NOTE also, this solution does not work in wayland! As xrandr does not work on wayland. So make sure when you log in, you choose xorg, not wayland),
(Немного прискорбно, что для меня события касания Firefox работают только в Wayland, поэтому мне приходится выбирать между сенсорной прокруткой яркости и Firefox. Не знаю, почему это так).
(Этот ответ был бы комментарием, но мне не хватает кредитов.)
Я сделал то же самое, что и выше, в Ubuntu MATE 17.04:
cat $MYDIR/scrbr.property
знак равно0.5
(scrbr = яркость экрана)- Создан скрипт
scrbr.sh
:
`` `
#!/bin/bash
ACTION=$1
PROP_FILE=$MYDIR/scrbr.property
BRIGHT=$(cat $PROP_FILE)
if [[ "$ACTION" == "--up" ]]; then
SYM="+"
elif [[ "$ACTION" == "--down" ]]; then
SYM="-"
fi
BRIGHT=$(echo "$BRIGHT $SYM 0.1" | bc)
# Not less than 0
[[ $BRIGHT == -* ]] && BRIGHT=0
echo $BRIGHT > $PROP_FILE
xrandr --output eDP-1 --brightness $BRIGHT
Переназначить ключи
WinKey + Up
вscrbr.sh --up
и то же самое для--down
,Прибыль.
После 4 лет использования различных решений в этом потоке пришло время отдать дань уважения сообществу и предложить свою лучшую альтернативу.
Многие из решений здесь включают перехватчики ACPI, которые, хотя и являются "хорошим взломом", просто компрометируют. Если вы примените изменения яркости мгновенно, вы потеряете плавную яркость. Если вы делаете плавную яркость, вы ставите под угрозу надежность (вы получаете мерцание, когда нажимаете кнопки яркости до того, как закончились эффекты предыдущего нажатия), и что, если яркость изменяется не с помощью клавиш яркости, а из-за среды рабочего стола (например, затемнение дисплея, если холостой ход)?
oled-linux - это проект, который направлен на решение всех этих и других проблем: имеет плавную регулировку яркости, надежен, имеет поддержку ночного освещения, поддерживает несколько дисплеев и в довершение всего, у него есть хорошая документация в README.md.
Теперь мы можем полностью раскрыть потенциал наших потрясающих OLED-дисплеев и в Linux. Я не могу выразить достаточно радости, которую я испытал, когда увидел, что дисплей затемняется таймером простоя рабочего стола ^.^