Lenovo ThinkPad X1 Yoga OLED Luminosité

13

J'utilise 16.04 sur mon X1 Yoga OLED.

Je ne peux pas du tout changer la luminosité de l'écran, il semble que la luminosité soit toujours maximale. J'ai essayé:

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

J'utilise GNOME Shell dans Xorg.

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

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
joar
la source
1
J'ai le même ordinateur portable et le même problème, j'ai essayé cette méthode mais j'obtiens: xrandr --output eDP1 --brightness .5 avertissement: sortie eDP1 introuvable; ignorer xrandr: besoin de crtc pour activer le gamma.
user240891
Une mise à jour que certains pourraient trouver utile - il existe maintenant une solution qui fonctionne sur Wayland, github.com/udifuchs/icc-brightness ; icc-brightness watchpuis utilisez vos touches de luminosité habituelles. Yay!
orangenarwhals

Réponses:

11

Il n'y a pas de rétro-éclairage avec un écran OLED. Les méthodes normales ne fonctionnent donc pas. Réglez la luminosité de l'écran au moyen 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

P.Meyer
la source
C'est correct. Je me demande si les responsables GNOME / pilotes ont résolu le problème de l'interface utilisateur "Je m'attends à ce que mon écran s'assombrisse lorsque j'appuie sur la touche SUN_ICON MINUS_SIGN". encore, et si et quand il arrivera en 16.04.
joar
J'ai le même ordinateur portable et le même problème, j'ai essayé cette méthode mais j'obtiens: xrandr --output eDP1 --brightness .5 avertissement: sortie eDP1 introuvable; ignorer xrandr: besoin de crtc pour activer le gamma.
user240891
3
Je viens d'installer une nouvelle distribution Linux et j'ai dû chercher ma propre réponse, j'ai donc trouvé votre commentaire. Si votre appareil est appelé différemment, entrez simplement xrandr par lui-même. Il affichera, entre autres, le nom du périphérique. Le mien s'appelle maintenant: eDP-1 par exemple.
P.Meyer
11

J'ai cherché 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-luminosité-up:

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

et / etc / acpi / events / yoga-luminosité-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 la racine xrandr- problème d'accès.

N'oubliez pas de redémarrer acpi en tapant

sudo service acpid reload

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

Ivo Blöchliger
la source
J'ai le même ordinateur portable et le même problème, j'ai essayé cette méthode mais j'obtiens: xrandr --output eDP1 --brightness .5 avertissement: sortie eDP1 introuvable; ignorer xrandr: besoin de crtc pour activer le gamma.
user240891
2
Je l'ai fait fonctionner, mais j'ai dû spécifier "eDP1" au lieu de "eDP-1". En outre, il convient de mentionner que vous devez faire "chmod a + rx /etc/acpi/yoga-brightness.sh". Merci!
Dan Christensen
5

Contrôle de luminosité fluide

( Mise à jour: j'ai téléchargé le script de provisionnement pour automatiser cela dans Github.)

Ce script est basé sur la solution de contournement d' Ivo Blöchliger . Je détesterais que mon portable cher soit 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éé et testé sur Linux Mint 18.3 et Ubuntu 16.04.3 sur un Lenovo ThinkPad X1 Yoga (2e génération) avec 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

Redsandro
la source
J'ai mis à jour le script ci-dessus pour qu'il soit multi-utilisateur et gère l'emplacement GDM xauthority gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221
3

MISE À JOUR - 12 juillet 2019 -

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

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

Le hack de script ci-dessous augmenterait également la luminosité de l'écran lorsque vous basculez en mode portrait (ou vice versa) et ne répondait pas au contrôle de luminosité de l'écran tactile. Tellement heureux de la solution Wayland.

Vieux

J'ai eu besoin de quelques ajustements pour faire fonctionner la solution @Redsandro sur mon installation ubuntu 18.10.

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

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

Par conséquent, nous changeons la ligne pertinente:

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

De plus, j'ai également dû changer eDP1pour eDP-1.

Au total, cela a conduit à des changements 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.

REMARQUE également, cette solution ne fonctionne pas dans wayland! Comme xrandr ne fonctionne pas sur Wayland. Assurez-vous donc que lorsque vous vous connectez, vous choisissez xorg, pas wayland),

(Un peu malheureux quant à moi, les événements firefox touch ne fonctionnent que dans Wayland, donc je dois choisir entre la luminosité vs firefox touchscroll. Je ne sais pas pourquoi c'est encore).

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

orangenarwhals
la source
1

J'ai fait une chose similaire à ce qui précède 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à scrbr.sh --up, et même pour --down.

  2. Profit.

vivri
la source