Comment changer la luminosité de l'écran LCD à partir de la ligne de commande (ou via un script)?

162

Pour contourner le bogue n ° 1005495 ( impossible de modifier la luminosité de l'écran LCD via des raccourcis clavier), j'aimerais disposer d'une requête de ligne de commande pour augmenter et d'une autre pour réduire la luminosité de mon écran LCD. Je pourrais ensuite mapper un raccourci clavier à chacune de ces requêtes.

Le problème est le suivant: je ne sais pas comment augmenter ou réduire la luminosité de l'écran LCD sur la ligne de commande. Le faites vous?

utilisateur69748
la source
2
Merci, Lekensteyn, mais ce n'est pas un doublon depuis lsmod | grep ^ i915 ne me donne aucun résultat (voir la solution acceptée). Toujours à la recherche d'une solution.
user69748

Réponses:

157

Une autre façon de faire est d’utiliser un autre nouveau programme nommé xbacklight, ouvrez votre terminal et tapez ceci.

sudo apt-get install xbacklight

puis tapez ceci xbacklight -set 50

là 50 signifie la plage de luminosité, nous pouvons obtenir jusqu’à 100 à partir de 0.

vous pouvez également augmenter et diminuer la luminosité de la valeur actuelle au niveau spécifié. Comme vous l'avez indiqué si vous souhaitez augmenter la luminosité jusqu'à 10%, vous pouvez indiquer cette valeur.

xbacklight -inc 10

et pour diminuer de 10%, vous pouvez donner cette

xbacklight -dec 10 

Attention : xbacklightne fonctionne qu'avec Intel, pas correctement sur Radeon et pas du tout avec le pilote de mode ( source ).

rɑːdʒɑ
la source
Cela ressemble à une commande très simple, mais il me faudrait quelque chose comme xbacklight -increase 10 pour augmenter la luminosité de 10%. Est-ce possible aussi?
user69748
1
Oui, vous pouvez. J'ai déjà mentionné cela. pour que vous puissiez l'obtenir par xbacklight -inc 10
vendredi
1
Ok, maintenant c'est dans votre réponse. Merci beaucoup, je vais l'essayer.
user69748
34
Ça a l'air simple, mais malheureusement ça ne marche pas pour moi. La luminosité ne change tout simplement pas, pas avec -dec ni avec -set. Je suppose que je devrai espérer que le bogue sera corrigé de sitôt. Merci quand même.
user69748
2
De plus, vous pouvez utiliser un raccourci: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi
149

Ouvrez votre terminal et tapez ceci

xrandr -q | grep " connected"

il vous donnera la sortie comme

LVDS1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 331mm x 207mm

Il LVDS1 représente votre affichage. Alors maintenant, vous devez faire comme

xrandr --output LVDS1 --brightness 0.5

0,5 correspond au niveau de luminosité et il est compris entre 0,0 et 1,0. 0.0 -> Full black. Vous devez donc choisir la valeur de luminosité requise.

Cela ne change pas la luminosité au niveau du matériel . De randrmanuel :

--brightness brightnessMultipliez les valeurs gamma sur le crtc actuellement attaché à la sortie avec la valeur flottante spécifiée. Utile pour les sorties trop brillantes ou trop faibles. Cependant, il s’agit d’une modification logicielle . Si votre matériel prend en charge la modification de la luminosité, vous préférerez probablement utiliser xbacklight.

rɑːdʒɑ
la source
2
Merci de votre réponse, mais il me faudrait quelque chose comme xrandr: augmentez de 10 pour augmenter la luminosité de 10%. Est-ce possible aussi?
user69748
48
cela ne semble pas changer la luminosité au niveau du matériel
erjoalgo
12
Dommage que cette réponse ait eu tant de voix. Mon écran d'ordinateur portable "imite" l'obscurité pour ainsi dire en rendant les choses plus sombres (tout comme lorsque vous lisez une vidéo avec une scène de nuit, cela n'a rien à voir avec la clarté de l'écran mais plutôt avec des pixels masquant la lumière de l'arrière-plan). La clarté est exactement la même, gaspillant encore plus de batterie qu'auparavant à cause des pixels plus sombres.
Mephisto
2
Merci, ça m'a sauvé la journée et les yeux aussi :) :)
Shylendra Madda
7
Cela simule la luminosité. La luminosité ne change pas, elle est rendue par logiciel.
user1970939
110

Ce qui suit fonctionne pour moi:

echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness

Je suppose que la valeur maximale possible est dans le /sys/class/backlight/intel_backlight/max_brightnessfichier.

Remplacez-le intel_backlightpar un astérisque à appliquer à tous les contre-jour.

palacsint
la source
16
@Ray Essayez ceci: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod
10
@Ray lorsque vous effectuez une sudo echo 400 > /sys/class . .. ./brightnessredirection se fait par shell, pas par écho. Et shell fonctionne toujours en tant qu'utilisateur régulier, pas en tant que sudo. C'est pourquoi il donne la permission refusée. Vous devez disposer d'un utilitaire permettant d'écrire dans un fichier avec les autorisations root, raison pour laquelle cela teefonctionne.
Sergiy Kolodyazhnyy
4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnesspour APU et cartes radeon
Suici Doga
13
C'est ridiculement bas, mais semble en fait être la seule chose qui fonctionne de manière fiable. Cela devient un peu moins moche si vous sudo chmod 0646le brightnessfichier, donc sudon'est plus nécessaire pour régler la luminosité.
gauche autour
7
La raison pour laquelle cela est défini sur les autorisations su est qu’un virus pourrait éventuellement rendre votre écran sombre et lumineux, à une vitesse incroyable, endommageant en fin de compte l’affichage de votre matériel. Dans les années 90, j'ai rencontré un virus qui ajustait l'écran Hertz si rapidement que votre moniteur se mettait à frire. Soyez donc prudent en modifiant les autorisations à ce sujet.
RyanNerd
12

Pour les ordinateurs portables,

sudo setpci -s 00:02.0 F4.B=80

Changez 80de [0-FF]pour obtenir la luminosité la plus basse. La valeur spécifiée est en hex, ce 80qui vous donnera une 50%luminosité maximale.

Pour que les ordinateurs de bureau effectuent une correction gamma (non testée par moi),

xgamma -gamma .75
Gaurav Gandhi
la source
Merci de votre réponse, mais il me faudrait quelque chose comme setpci - increase 10 pour augmenter la luminosité de 10%. Est-ce possible aussi?
user69748
merci pour cette réponse, il est bon de savoir comment les choses se passent aux niveaux inférieurs
erjoalgo
1
C’est la seule réponse qui a fonctionné pour moi sur un Samsung NB30 Plus.
OSE
Je n'arrive pas à obtenir que cela fonctionne. Devrais-je modifier certains paramètres, et si oui, comment trouver les valeurs appropriées?
Rasmus
Merci, je suis sur un ordinateur portable, ça setpcin'a pas marché mais ça a fonctionné xgamma.
Philip Kirkbride
5

Utiliser DBus avec Gnome

Les étapes de luminosité pour le contrôle du clavier peuvent également être mises en œuvre avec cette méthode.

# Step up:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp

# Step down:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown

Remarques

Pablo A
la source
+1 confirme que cela fonctionne très bien sur l'écran LCD interne. Cela n'affecte pas les moniteurs externes déjà contrôlés avec xrandrdes scripts gamma et de luminosité.
WinEunuuchs2Unix
4

Essayez ceci dans le terminal:

xrandr --output LVDS1 --brightness 0.9

Vous pouvez modifier la dernière valeur à votre guise, par exemple. 0,2

Ripu
la source
1
1) La sortie n'est pas toujours LVDS1, mais l'utilisateur peut le savoir avec xrandr --verbose 2) Ne modifie pas l'intensité du rétroéclairage
erjoalgo
4

Faites ce script:

set-brightness.sh

#!/bin/bash
TARGET="acpi_video0"
cd /sys/class/backlight
MAX="$(cat "${TARGET}/max_brightness")"
# The `/1` at the end forced bc to cast the result 
# to an integer, even if $1 is a float (which it 
# should be)
LOGIC="$(echo "($1 * ${MAX})/1" | bc)"
for i in */; do
    if [[ "${TARGET}/" != "$i" && -e "${i}brightness" ]]; then
        cat "${i}max_brightness" > "${i}brightness"
    fi
done
echo "$LOGIC" > "${TARGET}/brightness"

Exécutez-le en tant que root, avec une valeur comprise entre 0 et 1.

sudo ./set-brightness.sh 0.5
  • Si votre système ne possède pas de fichier /sys/class/backlight/acpi_video0, il devrait y avoir au moins un répertoire, qui peut être spécifique à un périphérique (j'ai également un radeon_bl0, par exemple).
  • Si vous en avez d'autres, gardez à l'esprit leur pile de valeurs (d'où la boucle; poussant toutes les autres valeurs à 1,0, puis définissant la cible à la valeur souhaitée).
  • Même acpi_video0 si cela devrait toujours fonctionner, il n’a pas toujours la gamme complète de luminosité physique disponible. Essayez chacune d’elles et utilisez celle qui a la plus grande gamme comme "CIBLE"
Fordi
la source
2
Pensez à utiliser /sys/class/backlight/*/brightnessau lieu d'essayer de coder acpi_video0en dur dans le script. Cela permettra de généraliser le chemin du fichier, ce qui peut être différent - je l’ai par exemple intel_backlight, pas acpi_video0. C'est ce que j'ai utilisé dans mon script ici
Sergiy Kolodyazhnyy
3

Comme @palacsint l'a dit, echo 244 > /sys/class/backlight/intel_backlight/brightnesspath fonctionne pour moi.

Mais les valeurs max et min sont renvoyées dans /sys/class/backlight/intel_backlight/max_brightnesset dans les /sys/class/backlight/intel_backlight/bl_powerfichiers respectivement.

En outre, la luminosité actuelle de votre ordinateur est présente dans /sys/class/backlight/intel_backlight/actual_brightness

utilisateur281989
la source
3

KDE 4.12:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightness 55

Version KDE Plasma: 5.14.3:

Le code ci-dessus est toujours valide. Cela ne fonctionnera que si vous êtes un utilisateur de KDE. Cependant, dans ce cas, aucun logiciel supplémentaire ne sera nécessaire. Il aura exactement le même comportement que lors de l'utilisation du widget "batterie et luminosité". Autant que je sache, il change le rétro-éclairage physique, contrairement à xrandrce qui n’est pas le cas.

Attention, le 55 ci-dessus n'est pas une fraction de 100, ce dernier étant la luminosité maximale. Au lieu de cela, il est lié à max_brightness:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl brightnessMax

Il existe également une version "silencieuse" que vous pourriez préférer dans un script:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightnessSilent 2000

Refs : qdbus , solide , luminosité

int_ua
la source
pouvez-vous expliquer ce que cela va faire?
vendredi
2

Voici une courte ligne qui peut vous aider à détendre vos yeux. Il suffit de créer une crontaab avec la ligne ou de créer un script

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1
Cristianpark
la source
2

En utilisant les réponses ci-dessus, j'ai créé ce script (enregistré dans mon répertoire personnel sous le nom de brillance.sh) pour modifier la luminosité de l'écran (car le clavier de l'ordinateur portable avait un problème de thé renversé et devenait inutilisable). N'hésitez pas à l'utiliser (si vous avez les fichiers désignés ... sinon, bricoler pour indiquer votre variation sera nécessaire).

#!/bin/bash
function main_menu
{
    sudo clear
    cursetting=$(cat /sys/class/backlight/intel_backlight/brightness)
    maxsetting=$(cat /sys/class/backlight/intel_backlight/max_brightness)
    powersave=$((maxsetting/5))
    conservative=$((powersave*2))
    medium=$((powersave*3))
    performance=$((powersave*4))
    echo ""
    echo "----------------------- Brightness -----------------------"
    echo " 1. Set Display to Minimum (Powersave) brightness setting."
    echo " 2. Set Display to Low (Conservative) brightness setting."
    echo " 3. Set Display to Medium brightness setting."
    echo " 4. Set Display to High (Performance) brightness setting."
    echo " 5. Set Display to Maximum brightness setting."
    echo " 6. Exit."
    echo "----------------------------------------------------------"
    if [ $cursetting -eq $powersave ]; then
     cursetting='Minimum'
    else
     if [ $cursetting -eq $conservative ]; then
      cursetting='Conservative'
     else
      if [ $cursetting -eq $medium ]; then
       cursetting='Medium'
      else
       if [ $cursetting -eq $performance ]; then
        cursetting='Performance'
       else
        if [ $cursetting -eq $maxsetting ]; then
         cursetting='Maximum'
        fi
       fi
      fi
     fi
    fi
    echo "        Current Display Setting - "$cursetting;
    choice=7
    echo ""
    echo -e "Please enter your choice: \c"
}

function press_enter
{
    echo ""
    echo -n "Press Enter to continue."
    read
    main_menu
}

main_menu
while [ $choice -eq 7 ]; do
read choice

if [ $choice -eq 1 ]; then
 echo $powersave | sudo tee /sys/class/backlight/intel_backlight/brightness
 main_menu
else
 if [ $choice -eq 2 ]; then
  echo $conservative | sudo tee /sys/class/backlight/intel_backlight/brightness
  main_menu
 else
  if [ $choice -eq 3 ]; then
   echo $medium | sudo tee /sys/class/backlight/intel_backlight/brightness
   main_menu
  else
   if [ $choice -eq 4 ]; then
    echo $performance | sudo tee /sys/class/backlight/intel_backlight/brightness
    main_menu
   else
    if [ $choice -eq 5 ]; then
     echo $maxsetting | sudo tee /sys/class/backlight/intel_backlight/brightness
     main_menu
    else
     if [ $choice -eq 6 ]; then
      exit;
     else
      echo -e "Please enter the NUMBER of your choice: \c"
      choice = 7
     fi
    fi
   fi
  fi
 fi
fi
done
Aaron Nichols
la source
Vous pourriez faire mieux que simplement imbriquer beaucoup de conditions si, comme elifou même mieux case. Aussi, je suggère de lire un guide de style comme google.github.io/styleguide/shell.xml et d'essayer un linter comme shellcheck car il vous aide à créer un meilleur code. J'aimerais que quelqu'un me le dise quand j'ai commencé à écrire des scripts il y a des années. :)
LiveWireBT le
1

ddccontrol est une autre option permettant de contrôler le rétroéclairage des moniteurs externes. Ici, je peux régler le rétroéclairage de mon moniteur externe à 50% de sa puissance avec:

ddccontrol -p -r 0x10 -w 50

J'ai cherché différentes solutions à ce problème pour améliorer la façon dont Redshift gère les changements de luminosité . Là-bas, j’ai découvert qu’il existait un patch pour le noyau Linux afin d’améliorer la compatibilité entre les périphériques, de sorte que les ordinateurs portables et les écrans externes puissent fonctionner de la même manière sysfs.

En attendant, ddccontrol est la seule chose qui fonctionne pour moi ici. Comme d'habitude, Arch wiki dispose d'une bonne documentation générale sur le sujet.

anarcat
la source
0

Interface utilisateur interactive de type ncurses utilisant xbacklight

Un pauvre homme ncurses. Frapper het ça baisse de 10%, frapper let ça augmente de 10%. Ensuite, affichez la luminosité actuelle.

xback() (
  done=false;
  echo "less: h, more: l, quit: q"
  while ! $done; do
    read -rsn1 key
    if [ "$key" = h ]; then
      xbacklight -dec 10
    elif [ "$key" = l ]; then
      xbacklight -inc 10
    elif [ "$key" = q ]; then
      done=true
    fi
    printf "\r$(xbacklight -get) "
  done
)
Ciro Santilli 改造 心心
la source
0

Pour définir la luminosité absolue (pour les utilisateurs d'ordinateurs portables):

BRIGHTNESS=50 # 0 to 100

dbus-send \
--session \
--type=method_call \
--dest="org.gnome.SettingsDaemon.Power" \
/org/gnome/SettingsDaemon/Power \
org.freedesktop.DBus.Properties.Set \
string:"org.gnome.SettingsDaemon.Power.Screen" \
string:"Brightness" \
variant:int32:$BRIGHTNESS
nvd
la source