Jak zmienić jasność LCD z wiersza poleceń (lub za pomocą skryptu)?

162

Aby obejść błąd nr 1005495 ( niemożliwa zmiana jasności wyświetlacza LCD za pomocą skrótów klawiszowych), chciałbym mieć jedno zapytanie w wierszu poleceń do zwiększenia i jedno do zmniejszenia jasności mojego wyświetlacza LCD. Mógłbym następnie przypisać skrót klawiszowy do każdego z tych zapytań.

Problem polega na tym: nie wiem, jak zwiększyć i zmniejszyć jasność LCD w wierszu poleceń. Czy ty?

użytkownik69748
źródło
1
możliwy duplikat Nie można zmienić jasności w laptopie Lenovo
Lekensteyn,
2
Dzięki, Lekensteyn, ale to nie jest duplikat od lsmod | grep ^ i915 nie daje mi żadnych danych wyjściowych (patrz zaakceptowane rozwiązanie). Wciąż szukam rozwiązania.
user69748,

Odpowiedzi:

157

Jeszcze jeden sposób, w jaki musimy to zrobić, to inny program o nazwie xbacklight, otwórz terminal i wpisz ten

sudo apt-get install xbacklight

następnie wpisz to xbacklight -set 50

tam 50 oznacza zakres jasności, możemy go zwiększyć do 100 od 0.

możesz również zwiększać i zmniejszać jasność z wartości bieżącej do określonego poziomu. jak wspomniałeś, jeśli chcesz zwiększyć do 10% od aktualnej wartości jasności, możesz to podać

xbacklight -inc 10

i aby zmniejszyć 10%, możesz to dać

xbacklight -dec 10 

Ostrzeżenie : xbacklightdziała tylko z Intelem, niepoprawnie na Radeonie i wcale nie ze sterownikiem trybu ustawiania ( źródło ).

rɑːdʒɑ
źródło
Wygląda na bardzo proste polecenie, ale potrzebuję czegoś takiego jak xbacklight - zwiększenie 10, aby zwiększyć jasność o 10 procent. Czy to też możliwe?
user69748,
1
Tak, możesz. Już o tym wspomniałem. więc możesz uzyskać to przez xbacklight -inc 10
rɑːdʒɑ
1
Ok, teraz jest w twojej odpowiedzi. Wielkie dzięki, spróbuję tego.
user69748,
34
To naprawdę wygląda na proste, ale niestety nie działa dla mnie. Jasność po prostu się nie zmienia, nie przy pomocy -dec i nie przy -set. Chyba będę musiał mieć nadzieję, że błąd zostanie naprawiony w najbliższym czasie. Dziękuję jednak.
user69748,
1
Dodatkowo istnieje skrót, którego można użyć: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi
149

Otwórz terminal i wpisz go

xrandr -q | grep " connected"

da ci wynik jako

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

Tam LVDS1 oznacza dla twojego wyświetlacza. Więc teraz musisz to zrobić

xrandr --output LVDS1 --brightness 0.5

tam 0,5 oznacza poziom jasności i wynosi od 0,0 do 1,0. 0,0 -> Pełna czerń. Więc musisz wybrać wymaganą wartość jasności.

To nie zmienia jasność na poziomie sprzętowym . Z randrinstrukcji :

--brightness brightnessPomnóż wartości gamma na crtc aktualnie dołączonym do wyjścia do określonej wartości zmiennoprzecinkowej. Przydatne w przypadku zbyt jasnych lub nadmiernie przyciemnionych wydruków. Jednak jest to modyfikacja tylko programowa , jeśli twój sprzęt ma obsługę faktycznej zmiany jasności, prawdopodobnie wolisz używać xbacklight.

rɑːdʒɑ
źródło
2
Dziękuję za odpowiedź, ale potrzebuję czegoś takiego jak xrandr - zwiększyć 10, aby zwiększyć jasność o 10 procent. Czy to też możliwe?
user69748,
48
nie wydaje się, aby zmieniało to jasność na poziomie sprzętowym
erjoalgo 18.10.13
12
Szkoda, że ​​ta odpowiedź otrzymała tyle głosów. Mój ekran laptopa „emuluje” ciemność, że można powiedzieć, że robi się ciemniejszy (tak jak podczas odtwarzania filmu ze sceną nocną, który nie ma nic wspólnego z jasnością ekranu, ale raczej z pikselami maskującymi światło w tle). Lekkość jest dokładnie taka sama, marnując jeszcze więcej baterii niż wcześniej, ponieważ piksele są teraz ciemniejsze.
Mefisto
2
Dzięki to uratowało mi też dzień i oczy .. :)
Shylendra Madda
7
Podrabia jasność. Jasność nie zmienia się, jest renderowana przez oprogramowanie.
user1970939,
109

Następujące dla mnie działa:

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

Chyba maksymalna możliwa wartość znajduje się w /sys/class/backlight/intel_backlight/max_brightnesspliku.

Zastąp intel_backlightgwiazdką, aby zastosować do wszystkich podświetleń.

palacsint
źródło
16
@Ray Spróbuj tego: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod
10
@ Promień po wykonaniu sudo echo 400 > /sys/class . .. ./brightnessprzekierowania odbywa się za pomocą powłoki, a nie echa. Powłoka nadal działa jako zwykły użytkownik, a nie sudo. Dlatego odmawia zgody. Musisz mieć narzędzie, które będzie zapisywać do pliku z uprawnieniami roota, dlatego teedziała.
Sergiy Kolodyazhnyy
4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessdla APU i kart Radeon
Suici Doga
13
Jest to absurdalnie niski poziom, ale w rzeczywistości wydaje się, że to jedyna rzecz, która niezawodnie działa. To staje się nieco mniej brzydki Jeśli plik, więc nie jest potrzebna do ustawiania jasności już. sudo chmod 0646brightnesssudo
lewo około
7
Powodem tego jest ustawianie uprawnień su, ponieważ wirus może przyciemnić ekran i rozjaśnić go z niewiarygodną prędkością, ostatecznie uszkadzając ekran sprzętu. W latach 90. spotkałem wirusa, który tak szybko dostosowałby odświeżanie ekranu Hertza, że ​​monitor się usmażył. Ostrożnie modyfikuj uprawnienia w tym zakresie.
RyanNerd
12

Do laptopów,

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

Zmień 80, [0-FF]aby uzyskać najniższą najwyższą jasność. Podana wartość jest szesnastkowa, więc 80da ci 50%maksymalną jasność.

Aby komputery stacjonarne dokonały korekcji gamma (nie testowane przeze mnie),

xgamma -gamma .75
Gaurav Gandhi
źródło
Dziękuję za odpowiedź, ale potrzebuję czegoś takiego jak setpci - zwiększyć 10, aby zwiększyć jasność o 10 procent. Czy to też możliwe?
user69748,
dziękuję za tę odpowiedź, dobrze wiedzieć, jak się to robi na niższych poziomach
erjoalgo
1
To była jedyna odpowiedź, która działała dla mnie na Samsung NB30 Plus.
OSE
Wydaje mi się, że nie mogę tego uruchomić. Może powinienem zmienić niektóre parametry, a jeśli tak, to jak znaleźć odpowiednie wartości?
Rasmus
Dzięki, jestem na laptopie, setpcinie działał, ale działał xgamma.
Philip Kirkbride
4

Wypróbuj to w terminalu:

xrandr --output LVDS1 --brightness 0.9

Możesz zmienić ostatnią wartość, jak chcesz, np. 0.2

ripu
źródło
1
1) Wyjście nie zawsze jest LVDS1, ale użytkownik może dowiedzieć się za pomocą xrandr --verbose 2) Nie zmienia intensywności podświetlenia
erjoalgo 18.10.13
4

Utwórz ten skrypt:

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"

Uruchom go jako root, z dowolną wartością z zakresu od 0 do 1.

sudo ./set-brightness.sh 0.5
  • Jeśli twój system nie ma /sys/class/backlight/acpi_video0, powinien tam być co najmniej jeden katalog, który może być specyficzny dla urządzenia (mam też radeon_bl0np.).
  • Jeśli masz inne, pamiętaj o stosie ich wartości (stąd pętla; przesunięcie wszystkich pozostałych wartości na 1,0, a następnie ustawienie wartości docelowej na żądaną wartość).
  • Chociaż acpi_video0 powinno zawsze działać, nie zawsze ma dostępną pełną gamę fizycznych jasności. Wypróbuj każdą z nich i użyj tej o największej gamie jako „CEL”
Fordi
źródło
2
Zastanów się nad użyciem /sys/class/backlight/*/brightnesszamiast próbowania twardego kodu acpi_video0w skrypcie. Pozwoli to na uogólnienie ścieżki do pliku, która może być inna - na przykład mam intel_backlight, nie acpi_video0. Właśnie tego użyłem w moim skrypcie tutaj
Sergiy Kolodyazhnyy
4

Używanie DBus z Gnome

Kroki jasności do sterowania klawiaturą mogą być również realizowane za pomocą tej metody.

# 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

Notatki

Pablo A.
źródło
+1 potwierdza, że ​​działa to świetnie na wewnętrznym wyświetlaczu LCD. Nie wpływa na zewnętrzne monitory, które są już kontrolowane za xrandrpomocą skryptów gamma i jasności.
WinEunuuchs2Unix
3

Jak powiedział @palacsint, echo 244 > /sys/class/backlight/intel_backlight/brightness ścieżka działa dla mnie.

Ale wartości max i min są złe w /sys/class/backlight/intel_backlight/max_brightnessi /sys/class/backlight/intel_backlight/bl_powerpliki odpowiednio.

Ponadto rzeczywista jasność, na której działa teraz komputer, jest obecna /sys/class/backlight/intel_backlight/actual_brightness

użytkownik 281989
źródło
3

KDE 4.12:

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

Wersja plazmowa KDE: 5.14.3:

Powyższy kod jest nadal ważny. Działa tylko wtedy, gdy jesteś użytkownikiem KDE. Jednak w takim przypadku nie będzie wymagało żadnego dodatkowego oprogramowania. Będzie zachowywać się dokładnie tak samo, jak podczas korzystania z widżetu „bateria i jasność”. AFAIK zmienia fizyczne podświetlenie, w przeciwieństwie do xrandrtego nie robi.

Uwaga: 55 powyżej nie stanowi ułamka 100, przy czym ten ostatni jest maksymalną jasnością. Zamiast tego jest związany z max_brightness:

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

Istnieje również „cicha” wersja, którą możesz preferować w skrypcie:

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

Odniesienia : qdbus , stałe , jasność

int_ua
źródło
czy możesz wyjaśnić, co to zrobi?
rɑːdʒɑ
2

Oto krótka linia, która może pomóc Ci zrelaksować oczy. Po prostu stwórz crontaab z linią lub stwórz skrypt

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1
Cristianpark
źródło
2

Korzystając z powyższych odpowiedzi, stworzyłem ten skrypt (zapisany w moim katalogu domowym jako jaskrawość.sh), aby zmodyfikować jasność wyświetlacza (ponieważ klawiatura laptopa cierpiała z powodu rozlanej herbaty i stała się bezużyteczna). Możesz go używać (jeśli masz wyznaczone pliki ... w przeciwnym razie konieczne będzie majsterkowanie, aby wskazać ich odmianę).

#!/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
źródło
Możesz zrobić więcej niż zagnieżdżanie wielu warunków, takich jak eliflub nawet lepszych case. Radzę też przeczytać przewodnik po stylu, taki jak google.github.io/styleguide/shell.xml, i wypróbować linijkę taką jak shellcheck, ponieważ pomaga ona stworzyć lepszy kod. Chciałbym, żeby ktoś mi to powiedział, kiedy zacząłem pisać skrypty lata temu. :)
LiveWireBT
1

ddccontrol to kolejna opcja do sterowania podświetleniem zewnętrznych monitorów. Tutaj mogę ustawić podświetlenie mojego monitora zewnętrznego na 50% jego mocy za pomocą:

ddccontrol -p -r 0x10 -w 50

Szukałem możliwych rozwiązań tego problemu, aby poprawić sposób, w jaki Redshift obsługuje zmiany jasności . Dzięki temu odkryłem, że istnieje zestaw łatek dla jądra Linux, aby poprawić kompatybilność między urządzeniami, dzięki czemu laptopy i ekrany zewnętrzne mogłyby działać podobnie sysfs.

Tymczasem ddccontrol jest jedyną rzeczą, która działa tutaj dla mnie. Jak zwykle wiki Arch ma również dobrą dokumentację na ten temat.

anarcat
źródło
0

Interaktywny interfejs użytkownika podobny do ncurses xbacklight

Klątwa biednego człowieka. Uderzenie hi spada o 10%, trafienie li wzrasta o 10%. Następnie pokaż aktualną jasność.

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
źródło