Bagaimana cara mengubah kecerahan LCD dari baris perintah (atau melalui skrip)?


162

Untuk mengatasi bug # 1005495 (mengubah kecerahan LCD melalui hotkey tidak mungkin), saya ingin memiliki satu permintaan baris perintah untuk meningkatkan dan satu untuk mengurangi kecerahan LCD saya. Saya kemudian bisa memetakan hotkey untuk masing-masing pertanyaan ini.

Masalahnya adalah: Saya tidak tahu bagaimana menambah dan mengurangi kecerahan LCD pada baris perintah. Apakah kamu?



2
Terima kasih, Lekensteyn, tapi ini bukan duplikat sejak lsmod | grep ^ i915 tidak memberi saya output (lihat solusi yang diterima). Masih mencari solusi.
user69748

Jawaban:


157

Satu lagi cara yang harus kita lakukan adalah dengan program baru lain bernama xbacklight, buka terminal Anda dan ketik ini

sudo apt-get install xbacklight

lalu ketik ini xbacklight -set 50

ada 50 singkatan kisaran kecerahan kita bisa mendapatkannya hingga 100 dari 0.

Anda juga dapat menambah dan mengurangi kecerahan dari nilai sekarang ke level yang ditentukan. Seperti yang Anda sebutkan jika Anda ingin meningkatkan hingga 10% dari nilai kecerahan saat ini maka Anda dapat memberikan ini

xbacklight -inc 10

dan untuk mengurangi 10% Anda bisa memberikan ini

xbacklight -dec 10 

Peringatan : xbacklighthanya bekerja dengan Intel, tidak benar pada Radeon dan tidak sama sekali dengan driver pengaturan mode ( sumber ).


Tampak seperti perintah yang sangat sederhana tapi yang saya butuhkan adalah sesuatu seperti xbacklight -increase 10 untuk meningkatkan kecerahan sebesar 10 persen. Apakah itu mungkin juga?
user69748

1
Ya kamu bisa. Saya sudah menyebutkan itu. jadi Anda bisa mendapatkannya dengan xbacklight -inc 10
r 24dʒɑ

1
Ok, sekarang ada di jawaban Anda. Terima kasih banyak, saya akan mencobanya.
user69748

34
Itu benar-benar terlihat sederhana, tetapi sayangnya itu tidak berhasil untuk saya. Brightness tidak berubah, tidak dengan -dec dan tidak dengan -set. Saya kira saya harus berharap bug diperbaiki dalam waktu dekat. Namun, terima kasih.
user69748

2
Selain itu, ada steno yang dapat Anda gunakan: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi

149

Buka terminal Anda dan ketik ini

xrandr -q | grep " connected"

itu akan memberi Anda output sebagai

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

Ada LVDS1 Stand untuk display Anda. Jadi sekarang kamu harus melakukan apa

xrandr --output LVDS1 --brightness 0.5

ada 0,5 singkatan tingkat kecerahan dan berkisar 0,0-1,0. 0,0 -> Full black .jadi Anda harus memilih nilai kecerahan yang diperlukan.

Ini tidak mengubah kecerahan pada tingkat perangkat keras . Dari randrmanual :

--brightness brightnessKalikan gamma nilai-nilai pada CRTC saat ini melekat pada output ke nilai floating ditentukan. Berguna untuk output yang terlalu terang atau terlalu redup. Namun, ini hanya modifikasi perangkat lunak , jika perangkat keras Anda memiliki dukungan untuk benar-benar mengubah kecerahan, Anda mungkin akan lebih suka menggunakan xbacklight.


2
Terima kasih atas jawaban Anda, tetapi yang saya butuhkan adalah xrandr --increase 10 untuk meningkatkan kecerahan sebesar 10 persen. Apakah itu mungkin juga?
user69748

48
ini tampaknya tidak mengubah kecerahan pada tingkat perangkat keras
erjoalgo

12
Sayang sekali jawaban ini mendapat begitu banyak suara. Layar laptop saya "mengemulasi" kegelapan dengan mengatakan hal-hal tampak lebih gelap (seperti ketika Anda memutar video dengan adegan malam, itu tidak ada hubungannya dengan kecerahan layar, melainkan dengan piksel menutupi cahaya latar belakang). Terangnya persis sama, menghabiskan lebih banyak baterai daripada sebelumnya karena piksel yang ada sekarang lebih gelap.
Mephisto

2
Thanx menyelamatkan hari dan mataku juga .. :)
Shylendra Madda

7
Itu palsu kecerahan. Kecerahan tidak berubah, itu diberikan oleh perangkat lunak.
user1970939

110

Berikut ini berfungsi untuk saya:

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

Saya kira nilai maksimum yang mungkin ada dalam /sys/class/backlight/intel_backlight/max_brightnessfile.

Ganti intel_backlightdengan tanda bintang untuk diterapkan ke semua lampu latar.


16
@Ray Coba ini: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod

10
@ Ray ketika Anda melakukan sudo echo 400 > /sys/class . .. ./brightnesspengalihan dilakukan oleh shell, bukan oleh gema. Dan shell masih berjalan sebagai pengguna reguler Anda, bukan sebagai sudo. Itu sebabnya memberi izin ditolak. Anda perlu memiliki utilitas yang akan menulis ke file dengan izin root, itulah sebabnya teebekerja.
Sergiy Kolodyazhnyy

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessuntuk radeon APU dan kartu
Suici Doga

13
Ini adalah tingkat yang sangat rendah, tetapi pada kenyataannya tampaknya menjadi satu-satunya hal yang dapat diandalkan. Ia mendapat sedikit kurang jelek jika Anda sudo chmod 0646yang brightnessfile, sehingga sudotidak diperlukan untuk pengaturan cahaya lagi.
leftaround sekitar

7
Alasan bahwa ini diatur pada izin su adalah bahwa virus dapat membuat layar Anda redup dan menjadi cerah dengan kecepatan luar biasa pada akhirnya merusak tampilan perangkat keras Anda. Pada tahun 90-an saya menjumpai virus yang akan menyesuaikan penyegaran layar Hertz begitu cepat sehingga monitor Anda akan menggoreng. Jadi hati-hati mengutak-atik izin ini.
RyanNerd

12

Untuk Laptop,

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

Ganti 80dengan [0-FF]untuk mendapatkan kecerahan terendah-tertinggi. Nilai yang ditentukan adalah dalam hex, sehingga 80akan memberi Anda 50%kecerahan maksimal.

Agar Desktop membuat koreksi gamma (tidak diuji oleh saya),

xgamma -gamma .75

Terima kasih atas jawaban Anda, tetapi yang saya perlukan adalah sesuatu seperti setpci --increase 10 untuk meningkatkan kecerahan sebesar 10 persen. Apakah itu mungkin juga?
user69748

terima kasih atas jawaban ini, ada baiknya mengetahui bagaimana hal-hal dilakukan di tingkat bawah
erjoalgo

1
Ini adalah satu-satunya jawaban yang bekerja untuk saya pada Samsung NB30 Plus.
OSE

Sepertinya saya tidak bisa menjalankan ini .. Haruskah saya mengubah beberapa parameter, mungkin, dan jika demikian, bagaimana cara menemukan nilai yang sesuai?
Rasmus

Terima kasih saya menggunakan laptop, setpcitidak berfungsi tetapi xgammaberhasil.
Philip Kirkbride

5

Menggunakan DBus dengan Gnome

Langkah-langkah dalam kecerahan untuk kontrol keyboard dapat diimplementasikan dengan metode ini juga.

# 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

Catatan


+1 mengonfirmasi ini berfungsi dengan baik pada tampilan LCD internal. Itu tidak mempengaruhi monitor eksternal yang sudah dikontrol dengan xrandrskrip gamma dan kecerahan.
WinEunuuchs2Unix

4

Coba ini di terminal:

xrandr --output LVDS1 --brightness 0.9

Anda dapat mengubah nilai terakhir sesuka Anda, mis. 0,2


1
1) Output tidak selalu LVDS1, tetapi pengguna dapat mengetahuinya dengan xrandr --verbose 2) Tidak mengubah intensitas cahaya latar
erjoalgo

4

Buat skrip ini:

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"

Jalankan sebagai root, dengan nilai antara 0 dan 1.

sudo ./set-brightness.sh 0.5
  • Jika sistem Anda tidak memiliki /sys/class/backlight/acpi_video0, setidaknya harus ada satu direktori di sana, yang mungkin khusus untuk perangkat (Saya juga punya radeon_bl0, misalnya).
  • Jika Anda memiliki yang lain, perlu diingat bahwa nilainya menumpuk (karenanya loop; mendorong semua nilai lainnya ke 1.0, kemudian menetapkan satu target ke jumlah yang diinginkan).
  • Meskipun acpi_video0 harus selalu berfungsi, itu tidak selalu memiliki berbagai kecerahan fisik yang tersedia. Coba masing-masing, dan gunakan yang dengan gamut terbesar sebagai "TARGET" Anda

2
Pertimbangkan untuk menggunakan /sys/class/backlight/*/brightnessalih-alih mencoba kode keras acpi_video0ke dalam skrip. Ini akan memungkinkan untuk menggeneralisasi path ke file, yang bisa berbeda - misalnya saya miliki intel_backlight, tidak acpi_video0. Itulah yang saya gunakan dalam skrip
Sergiy Kolodyazhnyy

3

Seperti yang dikatakan @palacsint, echo 244 > /sys/class/backlight/intel_backlight/brightnesspath bekerja untuk saya.

Tetapi nilai maks dan min dikirim ulang masing-masing /sys/class/backlight/intel_backlight/max_brightnessdan dalam /sys/class/backlight/intel_backlight/bl_powerfile.

Juga, kecerahan aktual yang dijalankan komputer Anda sekarang juga ada /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

Versi Plasma KDE: 5.14.3:

Kode di atas masih valid. Ini hanya akan berfungsi jika Anda adalah pengguna KDE. Namun dalam hal ini tidak memerlukan perangkat lunak tambahan. Ini akan memiliki perilaku yang sama persis seperti ketika menggunakan widget "baterai dan kecerahan". AFAIK mengubah cahaya latar fisik, berbeda dengan xrandryang tidak.

Berhati-hatilah karena 55 di atas bukan pecahan dari 100, yang terakhir adalah kecerahan maksimum. Sebaliknya itu terkait dengan max_brightness:

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

Ada juga versi "hening" yang mungkin Anda sukai dalam skrip:

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

Rujukan : qdbus , solid , brightness


dapatkah Anda menjelaskan apa yang akan dilakukannya?
rɑːdʒɑ

2

Inilah garis pendek yang dapat membantu Anda merilekskan mata. Cukup buat crontaab dengan baris atau buat skrip

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

2

Dengan menggunakan jawaban di atas, saya membuat skrip ini (disimpan di direktori rumah saya sebagai brightness.sh) untuk mengubah kecerahan tampilan (karena keyboard laptop mengalami masalah teh yang tumpah dan menjadi tidak dapat digunakan). Jangan ragu untuk menggunakannya (jika Anda memiliki file yang ditunjuk ... jika perlu, bermain-main dengan variasi Anda akan diperlukan).

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

Anda bisa melakukan lebih baik daripada hanya bersarang banyak kondisi jika, suka elifatau bahkan lebih baik case. Saya juga menyarankan membaca panduan gaya seperti google.github.io/styleguide/shell.xml dan mencoba linter seperti shellcheck karena membantu Anda membuat kode yang lebih baik. Saya berharap seseorang memberi tahu saya ini ketika saya mulai menulis skrip bertahun-tahun yang lalu. :)
LiveWireBT

1

ddccontrol adalah pilihan lain untuk mengontrol cahaya latar untuk monitor eksternal. Di sini saya dapat mengatur lampu latar monitor eksternal saya ke 50% dari kekuatannya dengan:

ddccontrol -p -r 0x10 -w 50

Saya mencari solusi yang mungkin untuk masalah ini untuk meningkatkan cara Redshift menangani perubahan kecerahan . Melalui sana saya menemukan bahwa ada patchset untuk kernel Linux untuk meningkatkan kompatibilitas lintas perangkat, sehingga laptop dan layar eksternal dapat bekerja dengan cara yang sama sysfs.

Sementara itu, ddccontrol adalah satu-satunya yang bekerja untuk saya di sini. Seperti biasa, Arch wiki memiliki dokumentasi keseluruhan yang baik tentang topik itu juga.


0

UI interaktif seperti ncurses menggunakan xbacklight

Seorang pria miskin ncurses. Hit hdan itu turun 10%, hit ldan naik 10%. Kemudian tunjukkan luminositas saat ini.

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

Untuk mengatur kecerahan absolut (untuk pengguna 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.