联想ThinkPad X1 Yoga OLED亮度


13

我在X1 Yoga OLED上运行16.04。

我根本无法更改屏幕的亮度,它似乎一直都处于最大亮度。我试过了:

  • Fn+ F5/F6
  • xbacklight -set 50(分别是100、0、20,...)/xbacklight -dec 10

我在Xorg中使用GNOME Shell。

希望能提供有用的软件和版本列表,如果需要更多说明,请在评论中告诉我。

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1

1
我有相同的笔记本电脑和相同的问题,尝试了此方法,但得到了:xrandr --output eDP1 --brightness .5警告:未找到输出eDP1;忽略xrandr:需要crtc来启用gamma。
user240891 '17

一些更新可能会有所帮助-现在有一种解决方案可以在Wayland上使用,github.com/udifuchs/icc-brightness ; icc-brightness watch然后使用常规亮度键。好极了!
orangenarwhals

Answers:


11

OLED屏幕没有背光。因此,常规方法不起作用。通过以下方式调整屏幕亮度:

xrandr --output eDP1 --brightness .5  # dim to half 

xrandr --output eDP1 --brightness 1  # no dimming

该数字可以是0到1之间的任何数字


这是对的。我想知道GNOME /驱动程序维护人员是否解决了“我希望在按SUN_ICON MINUS_SIGN键时屏幕变暗”的用户界面问题。然而,是否以及何时到达16.04。
2013年

我有相同的笔记本电脑和相同的问题,尝试了此方法,但我得到:xrandr --output eDP1 --brightness .5警告:未找到输出eDP1;忽略xrandr:需要crtc来启用gamma。
user240891 '17

3
我刚刚安装了新的Linux发行版,不得不查找自己的答案,所以找到了您的评论。如果您的设备使用不同的名称,则只需输入xrandr即可。除其他外,它将输出设备名称。我的名字现在叫:例如eDP-1。
P.Meyer

11

我一直在寻找一种在按下亮度按钮时运行xrandr命令的方法。我为此创建了自定义acpi事件(有关更多信息,请参见:https : //help.ubuntu.com/community/LaptopSpecialKeys)。这仍然是一个hack,没有适当的解决方案,但是它对我有用:

我创建了三个文件/ 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/+bug/660901上有关xrandr根目录-访问问题。

别忘了通过键入来重新启动acpi

sudo service acpid reload

我希望这有帮助 ;-)


我有相同的笔记本电脑和相同的问题,尝试了此方法,但得到了:xrandr --output eDP1 --brightness .5警告:未找到输出eDP1;忽略xrandr:需要crtc来启用gamma。
user240891 '17

2
我可以使用它,但是必须指定“ eDP1”而不是“ eDP-1”。另外,值得一提的是,您需要执行“ chmod a + rx /etc/acpi/yoga-brightness.sh”。谢谢!
丹·克里斯滕森

5

平滑亮度控制

更新:我已经将配置脚本上载到Github中以使其自动化。)

该脚本基于IvoBlöchliger的解决方法。我不希望我的昂贵笔记本电脑看起来便宜,所以我需要在亮度值之间平稳过渡才能与非Linux同事竞争。

它是在带有OLED面板的Lenovo ThinkPad X1 Yoga(第二代)上为Linux Mint 18.3和Ubuntu 16.04.3创建并测试的。

/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


我将上面的脚本更新为具有多用户功能,并且可以处理GDM xauthority位置gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221

3

更新-2019年7月12日-

Wayland现在有一个不错的脚本,我可以使用亮度键。

https://github.com/udifuchs/icc-brightness./icc-brightness watch

当将横向模式切换为纵向模式时(或反之),下面的脚本hack也将使屏幕达到全屏亮度,并且不响应触摸屏GUI的亮度控制。非常满意Wayland解决方案。

我需要做一些调整才能使@Redsandro解决方案在我的ubuntu 18.10安装中正常工作。

具体来说,由于.Xauthority文件不再存在,Xauth根解决方法不起作用(感谢提及@Ivo B!)。查找新文件的位置:

$ xauth info
Authority file:       /run/user/1000/gdm/Xauthority

因此,我们更改相关行:

-OLD: export XAUTHORITY=/home/redsandro/.Xauthority
+NEW: export XAUTHORITY=/run/user/1000/gdm/Xauthority

此外,我还必须更改eDP1eDP-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.

另外请注意,该解决方案在Wayland中不起作用!由于xrandr在Wayland上不起作用。因此,请确保在登录时选择xorg,而不是wayland,

(对我来说有点不幸,firefox触摸事件仅在Wayland中起作用,因此我必须在亮度vs firefox触摸滚动之间进行选择。不知道为什么会这样)。

(此答案本来是评论,但我没有任何荣誉。)


1

我在Ubuntu MATE 17.04中做了与上述类似的事情:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr =屏幕亮度)
  2. 创建了一个脚本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
  1. 将键WinKey + Up重新映射到scrbr.sh --up和相同--down

  2. 利润。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.