X1 Yoga OLEDで16.04を実行しています。
画面の明るさをまったく変更できません。常に最大の明るさになっているようです。私はもう試した:
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
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という3つのファイルを作成しました。
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
これが役立つことを願っています;-)
(更新:アップロードしました これを自動化するプロビジョニングスクリプト Githubに。)
このスクリプトは、IvoBlöchligerによる回避策に基づいています。私は高価なラップトップが安く見えることを嫌うので、Linux以外の同僚と競争するために、輝度値間のスムーズな移行が必要です。
これは、OLEDパネルを使用したLenovo ThinkPad X1 Yoga(第2世代)上の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
を実行します
現在、Wayland用のNiceスクリプトがあり、輝度キーを使用できます。
https://github.com/udifuchs/icc-brightness および./icc-brightness watch
。
以下のスクリプトハックは、横向きから縦向きモードに切り替えると(またはその逆に)画面を最高の明るさに傾斜させ、タッチスクリーン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
さらに、eDP1
をeDP-1
に変更する必要もありました。
これにより、合計で3行の変更が発生しました。
追加メモ
デバッグするために、私は使用しました
rui@chaiX1YG2:/var/log$ $ tail -f /var/log/syslog | grep oled-br
例えば私が見つけた2つのそれぞれのエラー(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のタッチイベントはWaylandでのみ機能するため、明るさを比較するか、Firefoxのタッチスクロールを選択する必要があります。それがなぜなのかはまだわかりません)。
(この答えはコメントでしたが、クレジットが不足しています。)
Ubuntu MATE 17.04で上記と同様のことを行いました。
cat $MYDIR/scrbr.property
= 0.5
(scrbr = screen-brightness)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
についても同じです。
利益。