Come modificare la luminosità dell'LCD dalla riga di comando (o tramite script)?


162

Per aggirare il bug # 1005495 ( impossibile cambiare la luminosità dell'LCD tramite tasti di scelta rapida), vorrei avere una query da riga di comando per aumentare e una per ridurre la luminosità del mio LCD. Potrei quindi mappare un tasto di scelta rapida per ognuna di queste query.

Il problema è: non so come aumentare e ridurre la luminosità dell'LCD sulla riga di comando. Fai?



2
Grazie, Lekensteyn, ma non è un duplicato da lsmod | grep ^ i915 non mi dà output (vedi soluzione accettata). Sto ancora cercando una soluzione.
user69748

Risposte:


157

Un altro modo in cui dobbiamo farlo è con un altro nuovo programma chiamato xbacklight, apri il tuo terminale e digita questo

sudo apt-get install xbacklight

quindi digita questo xbacklight -set 50

là 50 sta per intervallo di luminosità possiamo portarlo fino a 100 da 0.

puoi anche aumentare e diminuire la luminosità dal valore attuale al livello specificato. come hai menzionato se vuoi aumentare al 10% dal valore attuale di luminosità, allora puoi dare questo

xbacklight -inc 10

e per diminuire il 10% puoi dare questo

xbacklight -dec 10 

Attenzione : xbacklightfunziona solo con Intel, non correttamente su Radeon e per niente con driver di impostazione della modalità ( sorgente ).


Sembra un comando davvero semplice ma quello di cui avrei bisogno è qualcosa come xbacklight -aumentare 10 per aumentare la luminosità del 10 percento. È possibile anche questo?
user69748

1
Si, puoi. L'ho già detto. quindi puoi ottenerlo con xbacklight -inc 10
rɑːdʒɑ

1
Ok, ora è nella tua risposta. Grazie mille, lo proverò.
user69748

34
Sembra davvero semplice, ma sfortunatamente non funziona per me. La luminosità semplicemente non cambia, non con -dec e non con -set. Immagino che dovrò sperare che il bug venga risolto presto. Grazie comunque.
user69748

2
Inoltre, c'è una scorciatoia che puoi usare: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi

149

Apri il tuo terminale e digita questo

xrandr -q | grep " connected"

ti darà l'output come

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

Ci LVDS1 sta per il tuo display. Quindi ora devi fare come

xrandr --output LVDS1 --brightness 0.5

0,5 indica il livello di luminosità e varia da 0,0 a 1,0. 0.0 -> Nero pieno. Quindi devi scegliere il valore richiesto di luminosità.

Questo non cambia la luminosità a livello hardware . Dal randrmanuale :

--brightness brightnessMoltiplicare i valori gamma sul crtc attualmente collegato all'output per il valore variabile specificato. Utile per uscite eccessivamente luminose o troppo deboli. Tuttavia, questa è una modifica del solo software , se il tuo hardware ha il supporto per cambiare effettivamente la luminosità, probabilmente preferirai usare la xbacklight.


2
Grazie per la risposta, ma ciò di cui avrei bisogno è qualcosa come xrandr: aumentare il 10 per aumentare la luminosità del 10 percento. È possibile anche questo?
user69748

48
questo non sembra cambiare la luminosità a livello hardware
erjoalgo,

12
Peccato che questa risposta abbia ottenuto così tanti voti. Lo schermo del mio laptop "emula" l'oscurità, per così dire, facendo apparire le cose più scure (proprio come quando si riproduce un video con una scena notturna, che non ha nulla a che fare con la luminosità dello schermo ma piuttosto con i pixel che mascherano la luce di sfondo). La leggerezza è esattamente la stessa, sprecando ancora più batteria di prima a causa dei pixel che ora sono più scuri.
Mefisto,

2
Grazie ha salvato la mia giornata e anche gli occhi .. :)
Shylendra Madda

7
Finge la luminosità. La luminosità non cambia, è resa dal software.
user1970939

110

Per me funziona quanto segue:

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

Immagino che il valore massimo possibile sia nel /sys/class/backlight/intel_backlight/max_brightnessfile.

Sostituisci intel_backlightcon un asterisco da applicare a tutte le retroilluminazione.


16
@Ray Prova questo: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod,

10
@Ray quando si esegue il sudo echo 400 > /sys/class . .. ./brightnessreindirizzamento viene eseguito dalla shell, non dall'eco. E la shell funziona ancora come utente normale, non come sudo. Ecco perché dà il permesso negato. È necessario disporre di un'utilità che scriverà su file con permessi di root, motivo per cui teefunziona.
Sergiy Kolodyazhnyy

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessper APU e carte radeon
Suici Doga

13
Questo è ridicolmente di basso livello, ma in realtà sembra essere l'unica cosa che funziona in modo affidabile. Diventa un po 'meno brutto se sudo chmod 0646il brightnessfile, quindi sudonon è più necessario per impostare la luminosità.
circa

7
Il motivo per cui questo è impostato su permessi è che un virus potrebbe concepibilmente oscurare lo schermo e diventare luminoso a una velocità incredibile, danneggiando infine il display dell'hardware. Negli anni '90 ho riscontrato un virus che regolava l'aggiornamento dello schermo Hertz così rapidamente che il tuo monitor si friggeva. Quindi fai attenzione a modificare le autorizzazioni su questo.
RyanNerd,

12

Per laptop,

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

Cambiare 80per [0-FF]ottenere più basso-più alta luminosità. Il valore specificato è in esadecimale, quindi 80ti darà una 50%luminosità massima.

Per i desktop di effettuare una correzione gamma (non testata da me),

xgamma -gamma .75

Grazie per la risposta, ma ciò di cui avrei bisogno è qualcosa come setpci: aumentare 10 per aumentare la luminosità del 10 percento. È possibile anche questo?
user69748

grazie per questa risposta, è bello sapere come vengono fatte le cose ai livelli inferiori
erjoalgo,

1
Questa è stata l'unica risposta che ha funzionato per me su un Samsung NB30 Plus.
OSE

Non riesco a farlo funzionare. Devo modificare alcuni parametri, forse, e in tal caso, come posso trovare i valori appropriati?
Rasmus

Grazie, sono su un laptop, setpcinon ha funzionato ma xgammaha funzionato.
Philip Kirkbride,

5

Utilizzo di DBus con Gnome

Anche con questo metodo è possibile implementare passaggi di luminosità per il controllo da tastiera.

# 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

Appunti


+1 conferma che funziona alla grande sul display LCD interno. Non ha effetto su monitor esterni già controllati con xrandrscript gamma e luminosità.
WinEunuuchs2Unix

4

Prova questo nel terminale:

xrandr --output LVDS1 --brightness 0.9

Puoi modificare l'ultimo valore come preferisci, ad es. 0.2


1
1) L'output non è sempre LVDS1, ma l'utente può scoprirlo con xrandr --verbose 2) Non cambia l'intensità della retroilluminazione
erjoalgo,

4

Crea questo 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"

Eseguilo come root, con qualsiasi valore compreso tra 0 e 1.

sudo ./set-brightness.sh 0.5
  • Se il tuo sistema non ha un /sys/class/backlight/acpi_video0, dovrebbe esserci almeno una directory lì, che potrebbe essere specifica del dispositivo (ne ho anche uno radeon_bl0, per esempio).
  • Se ne hai altri, tieni a mente che i loro valori si accumulano (da qui il ciclo; spingendo tutti gli altri valori su 1.0, quindi impostando quello target sulla quantità desiderata).
  • Mentre acpi_video0 dovrebbe sempre funzionare, non ha sempre l'intera gamma di luminosità fisiche disponibili. Provali tutti e usa quello con la gamma più ampia come "TARGET"

2
Prendi in considerazione l'uso /sys/class/backlight/*/brightnessinvece di provare a scrivere acpi_video0nello script. Permetterà di generalizzare il percorso del file, che può essere diverso, ad esempio intel_backlightno acpi_video0. Questo è quello che ho usato nella mia sceneggiatura qui
Sergiy Kolodyazhnyy il

3

Come diceva @palacsint, il echo 244 > /sys/class/backlight/intel_backlight/brightnesspercorso funziona per me.

Ma i valori max e min sono rinviati rispettivamente nei file /sys/class/backlight/intel_backlight/max_brightnesse /sys/class/backlight/intel_backlight/bl_power.

Inoltre, è presente la luminosità effettiva attualmente in esecuzione sul computer /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

Versione al plasma di KDE: 5.14.3:

Il codice sopra è ancora valido. Funzionerà solo se sei un utente KDE. Tuttavia, in tal caso non richiederà alcun software aggiuntivo. Avrà lo stesso identico comportamento di quando si utilizza il widget "batteria e luminosità". AFAIK cambia la retroilluminazione fisica, al contrario di xrandrciò non accade.

Attenzione che il 55 sopra non è una frazione di 100, quest'ultima è la luminosità massima. Invece è legato a max_brightness:

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

Esiste anche una versione "silenziosa" che potresti preferire in uno script:

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

Rif: qdbus , solido , luminosità


puoi spiegare cosa farà?
rʒɑdʒɑ,

2

Ecco una breve linea che può aiutarti a rilassare gli occhi. Basta creare un crontaab con la linea o creare uno script

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1

2

Usando le risposte di cui sopra, ho creato questo script (salvato nella mia directory home come luminosità.sh) per modificare la luminosità del display (poiché la tastiera del laptop ha subito un problema di tè rovesciato e è diventata inutilizzabile). Sentiti libero di usarlo (se hai i file designati ... altrimenti sarà necessario armeggiare per indicarne la variazione).

#!/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

Potresti fare di meglio che annidare molte condizioni se, come elifo anche meglio case. Inoltre suggerisco di leggere una guida di stile come google.github.io/styleguide/shell.xml e di provare una linter come shellcheck in quanto ti aiuta a creare un codice migliore. Vorrei che qualcuno me lo dicesse quando ho iniziato a scrivere anni fa. :)
LiveWireBT

1

ddccontrol è un'altra opzione per il controllo della retroilluminazione per monitor esterni. Qui posso impostare la retroilluminazione del mio monitor esterno al 50% della sua potenza con:

ddccontrol -p -r 0x10 -w 50

Ho cercato possibili soluzioni a questo problema per migliorare il modo in cui Redshift gestisce i cambiamenti di luminosità . Da lì ho scoperto che esiste un patchset per il kernel Linux per migliorare la compatibilità tra i dispositivi, in modo che laptop e schermi esterni possano funzionare in modo simile, attraverso sysfs.

Nel frattempo, ddccontrol è l'unica cosa che funziona per me qui. Come sempre, la wiki di Arch ha anche una buona documentazione generale sull'argomento.


0

Utilizzo dell'interfaccia utente simile a ncurses interattiva xbacklight

Le maledizioni di un povero. Hit he scende del 10%, hit le sale del 10%. Quindi mostra la luminosità corrente.

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
)

0

Per impostare la luminosità assoluta (per utenti laptop):

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.