web-dev-qa-db-fra.com

Lenovo ThinkPad X1 Yoga OLED Luminosité

Je cours 16.04 sur mon X1 Yoga OLED.

Je ne peux pas du tout changer la luminosité de l'écran, il semble être tout le temps à la luminosité maximale. J'ai essayé:

  • Fn+F5/F6
  • xbacklight -set 50 (and 100, and 0, and 20, ...)/xbacklight -dec 10

J'utilise GNOME Shell sous Xorg.

Espérons que la liste utile des logiciels et des versions, dites-moi dans les commentaires si vous avez besoin de plus.

gnome-Shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
11
joar

Il n'y a pas de rétro-éclairage avec un écran OLED. Donc, les méthodes normales ne fonctionnent pas. Ajustez la luminosité de l'écran à l'aide de:

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

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

le nombre peut être compris entre 0 et 1

7
P.Meyer

Je cherchais un moyen d'exécuter la commande xrandr en appuyant sur les boutons de luminosité. J'ai créé des événements acpi personnalisés pour cela (plus d'informations à ce sujet ici: https://help.ubuntu.com/community/LaptopSpecialKeys ). Ceci est toujours un hack et aucune solution appropriée, mais cela fonctionne pour moi:

J'ai créé trois fichiers,/etc/acpi/events/yoga-bright-up:

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

et/etc/acpi/events/yoga-bright-down:

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

et enfin /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"

qui est fortement inspiré du fichier asus-keyboard-backlight.sh et des informations sur https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 pour le problème d'accès xrandr root.

N'oubliez pas de redémarrer acpi en tapant

Sudo service acpid reload

J'espère que ça aide ;-)

9
Ivo Blöchliger

Contrôle de la luminosité en douceur

( Mise à jour: J'ai téléchargé le script de provision pour automatiser cette opération vers Github.)

Ce script est basé sur la solution de contournement de Ivo Blöchliger . Je détesterais que mon cher ordinateur portable ait l'air bon marché. J'ai donc besoin d'une transition en douceur entre les valeurs de luminosité pour rivaliser avec mes collègues non linux.

Ceci est créé pour et testé sur Linux Mint 18.3 et Ubuntu 16.04.3 sur un Lenovo ThinkPad X1 Yoga (2e génération) avec le panneau 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

Supprimez tous les gestionnaires de luminosité précédents et, enfin, faites Sudo service acpid reload

3
Redsandro

MISE À JOUR - 12 juillet 2019 -

Il y a maintenant un script Nice pour Wayland, et je peux utiliser mes touches de luminosité.

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

Le script ci-dessous ramènerait également l'écran à la luminosité maximale lorsque vous basculeriez paysage en mode portrait (ou inversement) et ne réagirait pas au contrôle de la luminosité de l'écran tactile. Tellement heureux avec la solution Wayland.

Vieux

J'avais besoin de quelques ajustements pour que la solution @Redsandro fonctionne sur mon installation d'ubuntu 18.10.

Plus précisément, la solution de contournement de la racine Xauth ne fonctionne pas (merci de mentionner que @Ivo B!), Car le fichier .Xauthority n'existe plus. Pour trouver le nouvel emplacement de fichier:

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

Nous changeons donc la ligne correspondante:

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

De plus, je devais aussi changer eDP1 en eDP-1.

Au total, cela a entraîné des modifications sur trois lignes.


Notes complémentaires

Afin de déboguer, j'ai utilisé

rui@chaiX1YG2:/var/log$ $ tail -f /var/log/syslog | grep oled-br

par exemple. pour les deux erreurs respectives que j'ai trouvées (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 également, cette solution ne fonctionne pas dans wayland! Comme xrandr ne fonctionne pas sur wayland. Donc, assurez-vous que lorsque vous vous connectez, vous choisissez xorg, pas wayland),

(Un peu fâcheux quant à moi, firefox touch events ne fonctionne que dans Wayland, je dois donc choisir entre la luminosité et firefox touchscroll. Je ne sais pas pourquoi.).

(Cette réponse aurait été un commentaire mais je manque de crédits.)

1
orangenarwhals

J'ai fait la même chose que ci-dessus dans Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property = 0.5(scrbr = luminosité de l'écran)
  2. Créé un script 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. Remappez les clés WinKey + Up en scrbr.sh --up et de même pour --down.

  2. Profit.

1
vivri