Я работаю 16.04 на моей Йоге X1 OLED.
Я не могу изменить яркость экрана вообще, это, кажется, находится на максимальной яркости все время. Я попробовал:
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
Нет никакой подсветки с экраном 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-brightness-up:
event=video/brightnessup BRTUP 00000086
action=/etc/acpi/yoga-brightness.sh up
и/etc/acpi/events/yoga-brightness-down:
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 / + ошибка/660901 для xrandr проблемы корневого доступа.
не забывают перезапускать acpi путем ввода
sudo service acpid reload
, я надеюсь, это помогает ;-)
Я сделал подобную вещь к вышеупомянутому в ПОМОЩНИКЕ Ubuntu 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
.
Прибыль.
существует теперь хороший сценарий для Уэйленда, и я могу использовать свои ключи яркости.
https://github.com/udifuchs/icc-brightness и ./icc-brightness watch
.
взлом сценария ниже также сползал бы экран к максимальной яркости, когда среда переключателя к режиму портрета (или наоборот) и не отвечает на регулировку яркости GUI с сенсорным экраном. Настолько действительно довольный решением Уэйленда.
мне были нужны несколько тонких настроек, чтобы заставить @Redsandro решение работать над моей установкой человечности 18.10.
А именно, корневое обходное решение Xauth не работает (благодарит упомянуть это @Ivo B!) как .Xauthority
больше не существует файл. Найти новое расположение файла:
$ xauth info
Authority file: /run/user/1000/gdm/Xauthority
Поэтому мы изменяем соответствующую строку:
-OLD: export XAUTHORITY=/home/redsandro/.Xauthority
+NEW: export XAUTHORITY=/run/user/1000/gdm/Xauthority
Кроме того, я также должен был измениться eDP1
на eDP-1
.
Всего ведомый к изменениям на трех строках.
<час>Дополнительные примечания
для отладки, я использовал
rui@chaiX1YG2:/var/log$ $ tail -f /var/log/syslog | grep oled-br
, например, для двух соответствующих ошибок я нашел (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.
ПРИМЕЧАНИЕ также, это решение не работает в Уэйленде! Поскольку xrandr не работает над Уэйлендом. Поэтому удостоверьтесь, когда Вы входите в систему, Вы выбираете Xorg, не Уэйленд),
(Немного неудачный что касается меня, сенсорные события Firefox только работают в Уэйленде, таким образом, я должен выбрать между яркостью по сравнению с Firefox touchscroll. Не уверенный, почему это все же).
(Этот ответ был бы комментарием, но я испытываю недостаток в кредитах.)
(Обновление: я загрузил сценарий условия для автоматизации этого к GitHub.)
Этот сценарий основан на обходном решении Ivo Blöchliger. Я не хотел бы в свой дорогой ноутбук выглядеть дешевым, таким образом, мне нужен плавный переход между значениями яркости для конкуренции с моими коллегами не-Linux.
Это создается для и тестируется на Linux Mint 18.3 и Ubuntu 16.04.3 на Йоге Lenovo ThinkPad X1 (2-й Генерал) с панелью 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
После 4 лет использования различных решений в этой ветке пришло время отблагодарить сообщество и предложить свою лучшую альтернативу.
Многие из решений здесь включают перехватчики ACPI, которые, хотя и являются «хорошим взломом», они просто компрометируют. Если вы применяете изменения яркости мгновенно, вы ставите под угрозу плавную яркость. Если вы делаете плавную яркость, вы ставите под угрозу надежность (вы получаете мерцание, когда вы нажимаете кнопки яркости до того, как закончились эффекты предыдущего нажатия), и что, если яркость изменяется не с помощью клавиш яркости, а средой рабочего стола (например, затемнение дисплея, если простоя)?
oled-linux — это проект, целью которого является решение всех этих и многих других проблем: плавная регулировка яркости, надежность, поддержка ночного освещения, поддержка нескольких дисплеев и, в довершение всего, имеет хорошую документацию в README.md.
Теперь мы можем полностью раскрыть потенциал наших замечательных OLED-дисплеев и в Linux. Я не могу выразить достаточно радости, которую я испытал, когда увидел, что дисплей тускнеет из-за таймера простоя среды рабочего стола ^.^