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?



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 ).


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.


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ń.


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

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


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”

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


+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


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ść


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

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

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.


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
)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.