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é:
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
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
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 ;-)
( 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
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.
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.)
J'ai fait la même chose que ci-dessus dans Ubuntu MATE 17.04:
cat $MYDIR/scrbr.property
= 0.5
(scrbr = luminosité de l'écran)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
Remappez les clés WinKey + Up
en scrbr.sh --up
et de même pour --down
.
Profit.