Wie ändere ich die LCD-Helligkeit über die Befehlszeile (oder über ein Skript)?


162

Um den Fehler Nr. 1005495 ​​zu umgehen (Ändern der LCD-Helligkeit über Hotkeys nicht möglich), hätte ich gerne eine Befehlszeilenabfrage zum Erhöhen und eine zum Verringern der Helligkeit meines LCD. Ich könnte dann jeder dieser Abfragen einen Hotkey zuordnen.

Das Problem ist: Ich weiß nicht, wie ich die LCD-Helligkeit in der Befehlszeile erhöhen und verringern soll. Machst du?



2
Danke, Lekensteyn, aber es ist kein Duplikat seit lsmod | grep ^ i915 gibt keine Ausgabe aus (siehe akzeptierte Lösung). Immer noch auf der Suche nach einer Lösung.
user69748

Antworten:


157

Eine weitere Möglichkeit, dies zu tun, besteht darin, ein anderes neues Programm mit dem Namen xbacklight zu verwenden, das Terminal zu öffnen und dies einzugeben

sudo apt-get install xbacklight

dann tippe dies ein xbacklight -set 50

Da 50 für Helligkeitsbereich steht, können wir es von 0 auf 100 bringen.

Sie können auch die Helligkeit vom aktuellen Wert auf den angegebenen Wert erhöhen und verringern. Wie Sie bereits erwähnt haben, können Sie diesen Wert angeben, wenn Sie die Helligkeit vom aktuellen Wert auf 10% erhöhen möchten

xbacklight -inc 10

und um 10% zu verringern, können Sie dies geben

xbacklight -dec 10 

Warnung : Funktioniert xbacklightnur mit Intel, nicht richtig mit Radeon und überhaupt nicht mit dem Modesetting-Treiber ( Quelle ).


Sieht aus wie ein wirklich einfacher Befehl, aber ich brauche so etwas wie xbacklight - erhöhe 10, um die Helligkeit um 10 Prozent zu erhöhen. Ist das auch möglich?
User69748

1
Ja, du kannst. Das habe ich schon erwähnt. so können Sie das durch xbacklight -inc 10
rɑːdɑː

1
Ok, jetzt ist es in deiner Antwort. Vielen Dank, ich werde das ausprobieren.
User69748

34
Das sieht wirklich einfach aus, aber leider funktioniert es bei mir nicht. Die Helligkeit ändert sich einfach nicht, nicht mit -dec und nicht mit -set. Ich muss hoffen, dass der Fehler bald behoben wird. Trotzdem danke.
User69748

1
Darüber hinaus gibt es eine Kurzschrift, die Sie verwenden können: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi

149

Öffnen Sie Ihr Terminal und geben Sie dies ein

xrandr -q | grep " connected"

Es gibt Ihnen die Ausgabe als

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

Dort steht LVDS1 für Ihr Display. Also muss man jetzt machen wie

xrandr --output LVDS1 --brightness 0.5

dort steht 0,5 für Helligkeitspegel und reicht von 0,0 bis 1,0. 0.0 -> Vollschwarz. Sie müssen also den gewünschten Helligkeitswert auswählen.

Dies ändert die Helligkeit auf Hardwareebene nicht . Aus dem randrHandbuch :

--brightness brightnessMultiplizieren Sie die Gamma- Werte des aktuell an die Ausgabe angehängten CRTC mit dem angegebenen gleitenden Wert. Nützlich für zu helle oder zu dunkle Ausgänge. Dies ist jedoch eine reine Softwaremodifikation . Wenn Ihre Hardware die Änderung der Helligkeit unterstützt, bevorzugen Sie wahrscheinlich die Verwendung von xbacklight.


2
Danke, dass du antwortest, aber ich brauche so etwas wie xrandr - erhöhe 10, um die Helligkeit um 10 Prozent zu erhöhen. Ist das auch möglich?
user69748

48
dies scheint die Helligkeit auf Hardwareebene nicht zu verändern
erjoalgo

12
Schade, dass diese Antwort so viele Stimmen bekommen hat. Mein Laptop-Bildschirm "emuliert" sozusagen die Dunkelheit, indem er die Dinge dunkler erscheinen lässt (genau wie beim Abspielen eines Videos mit einer Nachtszene hat dies nichts mit der Helligkeit des Bildschirms zu tun, sondern mit Pixeln, die das Hintergrundlicht maskieren). Die Helligkeit ist exakt gleich und verschwendet noch mehr Batterie als zuvor, da die Pixel dunkler sind als jetzt.
Mephisto

2
Danke, es hat mir auch den Tag und die Augen gerettet .. :)
Shylendra Madda

7
Es täuscht die Helligkeit vor. Die Helligkeit ändert sich nicht, sie wird per Software gerendert.
user1970939

109

Folgendes funktioniert für mich:

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

Ich denke der maximal mögliche Wert ist in der /sys/class/backlight/intel_backlight/max_brightnessDatei.

Ersetzen Sie diese intel_backlightdurch ein Sternchen, um sie auf alle Hintergrundbeleuchtungen anzuwenden.


16
@Ray Versuchen Sie folgendes: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod

10
@Ray, wenn Sie die sudo echo 400 > /sys/class . .. ./brightnessUmleitung durchführen, erfolgt über die Shell, nicht über das Echo. Und die Shell wird weiterhin als normaler Benutzer ausgeführt, nicht als sudo. Deshalb wird die Erlaubnis verweigert. Sie benötigen ein Dienstprogramm, das mit Root-Berechtigungen in eine Datei schreibt, weshalb dies teefunktioniert.
Sergiy Kolodyazhnyy

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessfür Radeon APUs und Karten
Suici Doga

13
Dies ist lächerlich niedrig, aber es scheint tatsächlich das einzige zu sein, was zuverlässig funktioniert. Es wird ein bisschen weniger hässlich, wenn Sie sudo chmod 0646die brightnessDatei, also sudonicht mehr für die Einstellung der Helligkeit benötigt.
links um

7
Der Grund dafür, dass dies auf su-Berechtigungen festgelegt ist, ist, dass ein Virus möglicherweise Ihren Bildschirm verdunkelt und mit einer unglaublichen Geschwindigkeit hell werden lässt, wodurch letztendlich Ihr Hardware-Display beschädigt wird. In den 90er Jahren stieß ich auf einen Virus, der die Hertz-Bildschirmaktualisierung so schnell anpasste, dass Ihr Monitor brannte. Passen Sie also die Berechtigungen dafür auf.
RyanNerd

12

Für Laptops

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

Ändern Sie 80um [0-FF], um die niedrigste bis höchste Helligkeit zu erhalten. Der angegebene Wert ist in hex angegeben, sodass 80Sie eine 50%maximale Helligkeit erhalten.

Damit Desktops eine Gammakorrektur durchführen (nicht von mir getestet),

xgamma -gamma .75

Danke für deine Antwort, aber ich brauche so etwas wie setpci - erhöhe 10, um die Helligkeit um 10 Prozent zu erhöhen. Ist das auch möglich?
user69748

danke für diese antwort, es ist gut zu wissen, wie die dinge auf den unteren
ebenen gemacht

1
Dies war die einzige Antwort, die für mich auf einem Samsung NB30 Plus funktioniert hat.
OSE

Ich scheine nicht in der Lage zu sein, dies zum Laufen zu bringen. Sollte ich vielleicht einige Parameter ändern und wenn ja, wie finde ich die entsprechenden Werte?
Rasmus

Danke, ich bin auf einem Laptop, setpcihabe nicht funktioniert, aber xgammagetan.
Philip Kirkbride

4

Versuchen Sie dies im Terminal:

xrandr --output LVDS1 --brightness 0.9

Sie können den letzten Wert beliebig ändern, z. 0,2


1
1) Der Ausgang ist nicht immer LVDS1, aber Benutzer mit xrandr herausfinden können , --verbose 2) Nicht - Hintergrundbeleuchtung Intensität ändern
erjoalgo

4

Mach dieses Skript:

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"

Führen Sie es als root mit einem Wert zwischen 0 und 1 aus.

sudo ./set-brightness.sh 0.5
  • Wenn auf Ihrem System kein vorhanden ist /sys/class/backlight/acpi_video0, sollte mindestens ein Verzeichnis vorhanden sein, das möglicherweise gerätespezifisch ist ( radeon_bl0z. B. habe ich auch ein ).
  • Wenn Sie andere Werte haben, beachten Sie deren Wertestapel (daher die Schleife; verschieben Sie alle anderen Werte auf 1,0, und stellen Sie dann den gewünschten Wert für den Zielwert ein).
  • Es acpi_video0 sollte zwar immer funktionieren, verfügt jedoch nicht immer über alle verfügbaren physischen Helligkeiten. Probieren Sie jeden aus und verwenden Sie den mit dem größten Farbumfang als "ZIEL".

2
Verwenden Sie, /sys/class/backlight/*/brightnessanstatt zu versuchen, Code acpi_video0in das Skript einzufügen. Es ermöglicht die Verallgemeinerung des Pfades zur Datei, was anders sein kann - ich zum Beispiel intel_backlightnicht acpi_video0. Das habe ich hier
Sergiy Kolodyazhnyy

4

Verwenden von DBus mit Gnome

Mit dieser Methode können auch Helligkeitsstufen für die Tastatursteuerung implementiert werden.

# 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

Anmerkungen


+1 bestätigt, dass dies auf dem internen LCD-Display funktioniert. Externe Monitore, die bereits mit xrandrGamma- und Helligkeitsskripten gesteuert werden, sind nicht betroffen.
WinEunuuchs2Unix

3

Wie @palacsint sagte, echo 244 > /sys/class/backlight/intel_backlight/brightnessfunktioniert der Pfad für mich.

Max- und Min-Werte werden jedoch erneut in /sys/class/backlight/intel_backlight/max_brightnessbzw. in /sys/class/backlight/intel_backlight/bl_powerDateien gesendet.

Außerdem ist die tatsächliche Helligkeit, die Ihr Computer jetzt ausführt, in vorhanden /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

KDE Plasma Version: 5.14.3:

Der obige Code ist noch gültig. Dies funktioniert nur, wenn Sie ein KDE-Benutzer sind. In diesem Fall ist jedoch keine zusätzliche Software erforderlich. Es hat genau das gleiche Verhalten wie bei Verwendung des Widgets "Batterie und Helligkeit". Bei AFAIK ändert sich die physikalische Hintergrundbeleuchtung, bei AFAIK xrandrdagegen nicht.

Beachten Sie, dass die 55 oben nicht ein Bruchteil von 100 ist, wobei letztere die maximale Helligkeit ist. Stattdessen bezieht es sich auf max_brightness:

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

Es gibt auch eine "stille" Version, die Sie in einem Skript bevorzugen könnten:

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

Refs: qdbus , solid , Helligkeit


Kannst du erklären, was es tun wird?
Donnerstag,

2

Hier ist eine kurze Linie, die Ihnen helfen kann, Ihre Augen zu entspannen. Erstelle einfach ein Crontaab mit der Linie oder erstelle ein Skript

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

2

Anhand der obigen Antworten erstellte ich dieses Skript (in meinem Ausgangsverzeichnis als bright.sh gespeichert), um die Anzeigehelligkeit zu ändern (da die Tastatur des Laptops ein Problem mit verschüttetem Tee hatte und unbrauchbar wurde). Fühlen Sie sich frei, es zu verwenden (wenn Sie die angegebenen Dateien haben ... ansonsten ist es notwendig, zu basteln, um auf Ihre Variation von ihnen zu verweisen).

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

Sie könnten es besser machen, als nur eine Menge von Bedingungen zu verschachteln, wie elifoder sogar noch besser case. Außerdem empfehle ich, einen Styleguide wie google.github.io/styleguide/shell.xml zu lesen und einen Linter wie Shellcheck zu testen, um besseren Code zu erstellen. Ich wünschte, jemand hätte mir das erzählt, als ich vor Jahren mit dem Skripten angefangen habe. :)
LiveWireBT

1

ddccontrol ist eine weitere Option zur Steuerung der Hintergrundbeleuchtung für externe Monitore. Hier kann ich die Hintergrundbeleuchtung meines externen Monitors auf 50% seiner Leistung einstellen:

ddccontrol -p -r 0x10 -w 50

Ich habe nach möglichen Lösungen für dieses Problem gesucht, um die Art und Weise zu verbessern, in der Redshift mit Helligkeitsänderungen umgeht . Dort stellte ich fest, dass es ein Patchset für den Linux-Kernel gibt , um die Kompatibilität zwischen Geräten zu verbessern, sodass Laptops und externe Bildschirme ähnlich funktionieren können sysfs.

In der Zwischenzeit ist ddccontrol das einzige, was für mich hier funktioniert. Wie immer bietet das Arch-Wiki eine gute Gesamtdokumentation zu diesem Thema.


0

Interaktive ncurses-ähnliche Benutzeroberfläche mit xbacklight

Der Fluch eines armen Mannes. Hit hund es sinkt um 10%, Hit lund es steigt um 10%. Zeigen Sie dann die aktuelle Helligkeit an.

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
)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.