Làm cách nào để thay đổi độ sáng LCD từ dòng lệnh (hoặc thông qua tập lệnh)?


162

Để khắc phục lỗi # 1005495 (không thể thay đổi độ sáng LCD qua phím nóng), tôi muốn có một truy vấn dòng lệnh để tăng và một truy vấn để giảm độ sáng của màn hình LCD. Sau đó tôi có thể ánh xạ một phím nóng đến từng truy vấn này.

Vấn đề là: Tôi không biết cách tăng và giảm độ sáng LCD trên dòng lệnh. Phải không



2
Cảm ơn, Lekensteyn, nhưng nó không phải là bản sao kể từ lsmod | grep ^ i915 không cho tôi đầu ra (xem giải pháp được chấp nhận). Vẫn đang tìm kiếm một giải pháp.
dùng69748

Câu trả lời:


157

Một cách nữa chúng ta phải làm điều này là với một chương trình mới khác có tên là xbacklight, mở thiết bị đầu cuối của bạn và nhập cái này

sudo apt-get install xbacklight

sau đó gõ cái này xbacklight -set 50

có 50 chữ viết tắt cho phạm vi độ sáng, chúng ta có thể lấy nó tới 100 từ 0.

bạn cũng có thể tăng và giảm độ sáng từ giá trị hiện tại xuống mức được chỉ định. như bạn đã đề cập nếu bạn muốn tăng lên 10% từ giá trị độ sáng hiện tại thì bạn có thể đưa ra điều này

xbacklight -inc 10

và để giảm 10% bạn có thể đưa ra điều này

xbacklight -dec 10 

Cảnh báo : xbacklightchỉ hoạt động với Intel, không đúng trên Radeon và hoàn toàn không có trình điều khiển chế độ ( nguồn ).


Trông giống như một lệnh thực sự đơn giản nhưng thứ tôi cần là thứ gì đó như xbacklight - tăng 10 để tăng độ sáng thêm 10 phần trăm. Điều đó có thể không?
dùng69748

1
Có bạn có thể. Tôi đã đề cập đến điều đó. vì vậy bạn có thể có được điều đó bằng xbacklight -inc 10
rɑːdʒɑ

1
Ok, bây giờ là câu trả lời của bạn. Cảm ơn rất nhiều, tôi sẽ thử nó.
dùng69748

34
Điều đó thực sự có vẻ đơn giản, nhưng thật không may, nó không hoạt động đối với tôi. Độ sáng đơn giản là không thay đổi, không phải với -dec và không phải với -set. Tôi đoán tôi sẽ phải hy vọng lỗi được khắc phục sớm. Cảm ơn tuy nhiên.
dùng69748

2
Ngoài ra, có một tốc ký bạn có thể sử dụng: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi

149

Mở terminal của bạn và gõ cái này

xrandr -q | grep " connected"

nó sẽ cung cấp cho bạn đầu ra như

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

Có LVDS1 Stands cho màn hình của bạn. Vì vậy, bây giờ bạn phải làm như

xrandr --output LVDS1 --brightness 0.5

có 0,5 là viết tắt của mức độ sáng và nó nằm trong khoảng từ 0,0 đến 1,0. 0,0 -> Đen toàn bộ. Vì vậy, bạn phải chọn giá trị độ sáng cần thiết.

Điều này không thay đổi độ sáng ở mức phần cứng . Từ randrhướng dẫn :

--brightness brightnessNhân các giá trị gamma trên crtc hiện được gắn vào đầu ra với giá trị nổi được chỉ định. Hữu ích cho đầu ra quá sáng hoặc quá mờ. Tuy nhiên, đây chỉ là sửa đổi phần mềm , nếu phần cứng của bạn có hỗ trợ thực sự thay đổi độ sáng, có lẽ bạn sẽ thích sử dụng xbacklight.


2
Cảm ơn bạn đã trả lời nhưng những gì tôi cần là một cái gì đó như xrandr - tăng 10 để tăng độ sáng thêm 10 phần trăm. Điều đó có thể không?
dùng69748

48
điều này dường như không thay đổi độ sáng ở mức phần cứng
erjoalgo

12
Quá tệ câu trả lời này đã nhận được rất nhiều phiếu bầu. Màn hình máy tính xách tay của tôi "mô phỏng" bóng tối để nói bằng cách làm cho mọi thứ trở nên tối hơn (giống như khi bạn phát video với cảnh đêm, không liên quan gì đến độ sáng màn hình mà thay vào đó là các pixel che khuất ánh sáng nền). Độ sáng hoàn toàn giống nhau, gây lãng phí pin thậm chí nhiều hơn trước vì các pixel so với bây giờ tối hơn.
Mephisto

2
Thanx nó đã cứu cả ngày và đôi mắt của tôi nữa .. :)
Shylendra Madda

7
Nó giả mạo độ sáng. Độ sáng không thay đổi, nó được hiển thị bằng phần mềm.
dùng1970939

109

Các công việc sau đây cho tôi:

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

Tôi đoán giá trị tối đa có thể có trong /sys/class/backlight/intel_backlight/max_brightnesstập tin.

Thay thế intel_backlightbằng một dấu sao để áp dụng cho tất cả các đèn nền.


16
@ Hãy thử cái này : echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod

10
@Ray khi bạn thực hiện sudo echo 400 > /sys/class . .. ./brightnesschuyển hướng được thực hiện bằng shell chứ không phải bằng echo. Và shell vẫn chạy như người dùng thông thường của bạn, không phải là sudo. Đó là lý do tại sao nó cho phép bị từ chối. Bạn cần phải có một tiện ích sẽ ghi vào tệp với quyền root, đó là lý do tại sao teehoạt động.
Sergiy Kolodyazhnyy

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnesscho radeon APU và thẻ
Suici Doga

13
Đây là cấp độ thấp một cách nực cười, nhưng trên thực tế dường như là điều duy nhất hoạt động đáng tin cậy. Nó được một chút ít xấu xí nếu bạn sudo chmod 0646các brightnesstập tin, vì vậy sudokhông cần thiết cho việc thiết sáng nữa.
rẽ trái

7
Lý do điều này được đặt ở quyền su là do vi rút có thể hình dung làm cho màn hình của bạn mờ đi và sáng ở tốc độ đáng kinh ngạc cuối cùng làm hỏng màn hình phần cứng của bạn. Vào những năm 90, tôi đã gặp một loại virus có thể điều chỉnh màn hình làm mới Hertz nhanh đến mức màn hình của bạn sẽ bị rán. Vì vậy, hãy cẩn thận điều chỉnh các quyền trên này.
RyanNerd

12

Đối với máy tính xách tay,

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

Thay đổi 80bằng cách [0-FF]để có được thấp nhất-cao nhất sáng. Giá trị được chỉ định là ở dạng hex, do đó 80sẽ cung cấp cho bạn 50%độ sáng tối đa.

Để máy tính để bàn thực hiện chỉnh sửa gamma (không được tôi kiểm tra),

xgamma -gamma .75

Cảm ơn bạn đã trả lời nhưng những gì tôi cần là một cái gì đó như setpci - tăng 10 để tăng độ sáng thêm 10 phần trăm. Điều đó có thể không?
dùng69748

cảm ơn bạn vì câu trả lời này, thật tốt khi biết mọi thứ được thực hiện ở các cấp thấp hơn
erjoalgo

1
Đây là câu trả lời duy nhất phù hợp với tôi trên Samsung NB30 Plus.
OSE

Tôi dường như không thể làm cho điều này hoạt động .. Tôi có nên thay đổi một số tham số, có lẽ, và nếu vậy, làm thế nào để tôi tìm thấy các giá trị phù hợp?
Rasmus

Cảm ơn tôi trên máy tính xách tay, setpciđã không làm việc nhưng xgammađã làm.
Philip Kirkbride

5

Sử dụng DBus với Gnome

Các bước trong độ sáng để điều khiển bàn phím cũng có thể được thực hiện bằng phương pháp này.

# 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

Ghi chú


+1 xác nhận điều này hoạt động rất tốt trên màn hình LCD bên trong. Nó không ảnh hưởng đến màn hình ngoài đã được kiểm soát với xrandrcác tập lệnh gamma và độ sáng.
WinEunuuchs2Unix

4

Hãy thử điều này trong thiết bị đầu cuối:

xrandr --output LVDS1 --brightness 0.9

Bạn có thể thay đổi giá trị cuối cùng nếu muốn, vd. 0,2


1
1) Đầu ra không phải lúc nào cũng là LVDS1, nhưng người dùng có thể tìm ra với xrandr --verbose 2) Không thay đổi cường độ đèn nền
erjoalgo

4

Tạo kịch bản này:

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"

Chạy nó với quyền root, với bất kỳ giá trị nào từ 0 đến 1.

sudo ./set-brightness.sh 0.5
  • Nếu hệ thống của bạn không có /sys/class/backlight/acpi_video0, nên có ít nhất một thư mục trong đó, có thể là dành riêng cho thiết bị ( radeon_bl0ví dụ: tôi cũng có một thư mục).
  • Nếu bạn có những người khác, hãy ghi nhớ ngăn xếp giá trị của họ (do đó là vòng lặp; đẩy tất cả các giá trị khác lên 1.0, sau đó đặt mục tiêu một đến số lượng mong muốn).
  • Trong khi acpi_video0 phải luôn luôn làm việc, nó không luôn luôn có đầy đủ các độ sáng vật lý có sẵn. Hãy thử từng cái và sử dụng cái có gam lớn nhất làm "MỤC TIÊU" của bạn

2
Cân nhắc sử dụng /sys/class/backlight/*/brightnessthay vì cố gắng viết mã cứng acpi_video0vào tập lệnh. Nó sẽ cho phép tổng quát hóa đường dẫn đến tệp, có thể khác - ví dụ tôi có intel_backlight, không acpi_video0. Đó là những gì tôi đã sử dụng trong kịch bản
Sergiy Kolodyazhnyy

3

Như @palacsint đã nói, echo 244 > /sys/class/backlight/intel_backlight/brightnessđường dẫn hoạt động với tôi.

Nhưng giá trị tối đa và tối thiểu được gửi lại /sys/class/backlight/intel_backlight/max_brightness/sys/class/backlight/intel_backlight/bl_powercác tệp tương ứng.

Ngoài ra, độ sáng thực tế mà máy tính của bạn đang chạy hiện có /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

Phiên bản KDE Plasma: 5.14.3:

Các mã trên vẫn còn hiệu lực. Nó sẽ chỉ hoạt động nếu bạn là người dùng KDE. Tuy nhiên trong trường hợp đó, nó sẽ không yêu cầu thêm phần mềm nào. Nó sẽ có hành vi chính xác giống như khi sử dụng tiện ích "pin và độ sáng". AFAIK nó thay đổi đèn nền vật lý, ngược lại với đèn nền xrandrkhông.

Coi chừng 55 ở trên không phải là một phần nhỏ của 100, cái sau là độ sáng tối đa. Thay vào đó, nó có liên quan đến max_brightness:

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

Ngoài ra còn có một phiên bản "im lặng" mà bạn có thể thích trong một kịch bản:

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

Tham chiếu : qdbus , rắn , sáng


bạn có thể giải thích những gì nó sẽ làm?
rdʒɑ

2

Đây là một dòng ngắn có thể giúp bạn thư giãn mắt. Chỉ cần tạo một crontaab với dòng hoặc tạo một kịch bản

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

2

Sử dụng các câu trả lời ở trên, tôi đã tạo tập lệnh này (được lưu trong thư mục nhà của tôi dưới dạng độ sáng.sh) để sửa đổi độ sáng màn hình (vì bàn phím của máy tính xách tay bị sự cố đổ trà và trở nên không sử dụng được). Vui lòng sử dụng nó (nếu bạn có các tệp được chỉ định ... nếu không thì việc sửa lại để chỉ ra biến thể của chúng là cần thiết).

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

Bạn có thể làm tốt hơn là chỉ làm tổ rất nhiều nếu có điều kiện, thích elifhoặc thậm chí tốt hơn case. Ngoài ra, tôi khuyên bạn nên đọc một hướng dẫn về phong cách như google.github.io/styleguide/shell.xml và thử một kẻ nói dối như shellcheck vì nó giúp bạn tạo mã tốt hơn. Tôi ước ai đó nói với tôi điều này khi tôi bắt đầu viết kịch bản nhiều năm trước. :)
LiveWireBT

1

ddccontrol là một tùy chọn khác để kiểm soát đèn nền cho màn hình ngoài. Ở đây tôi có thể đặt đèn nền của màn hình ngoài của mình thành 50% công suất của nó với:

ddccontrol -p -r 0x10 -w 50

Tôi đã xem xét các giải pháp khả thi cho vấn đề này để cải thiện cách Redshift xử lý các thay đổi độ sáng . Qua đó, tôi thấy rằng có một bản vá cho nhân Linux để cải thiện khả năng tương thích giữa các thiết bị, để máy tính xách tay và màn hình ngoài có thể hoạt động tương tự nhau sysfs.

Trong khi đó, ddccontrol là thứ duy nhất phù hợp với tôi ở đây. Như thường lệ, wiki Arch cũng có tài liệu tổng thể tốt về chủ đề này.


0

Giao diện người dùng tương tự như ncurses sử dụng xbacklight

Một người đàn ông tội nghiệp. Lượt hvà nó giảm 10%, đánh lvà tăng 10%. Sau đó hiển thị độ sáng hiện tại.

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

Để đặt độ sáng tuyệt đối (cho người dùng máy tính xách tay):

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.