명령 줄에서 (또는 스크립트를 통해) LCD 밝기를 변경하는 방법은 무엇입니까?


162

해결하려면 버그 # 1005495 (불가능 단축키를 통해 LCD 밝기를 변경), 내 LCD의 밝기를 줄이기위한 하나의 명령 행 증가에 대한 쿼리 및 하나를 가지고 싶습니다. 그런 다음이 쿼리 각각에 핫키를 매핑 할 수 있습니다.

문제는 : 나는 커맨드 라인에서 LCD 밝기를 늘리고 줄이는 방법을 모른다. 당신 은요?



2
감사합니다. Lekensteyn, lsmod 이후 중복되지 않습니다 | grep ^ i915는 출력을 제공하지 않습니다 (허용 된 솔루션 참조). 아직도 해결책을 찾고 있습니다.
user69748

답변:


157

우리가 이것을 해야하는 또 다른 방법은 xbacklight라는 다른 새로운 프로그램을 사용하여 터미널을 열고 이것을 입력하는 것입니다

sudo apt-get install xbacklight

그런 다음 이것을 입력하십시오 xbacklight -set 50

50은 밝기 범위를 나타내며 0에서 100까지 얻을 수 있습니다.

현재 값에서 지정된 수준으로 밝기를 높이거나 낮출 수 있습니다. 현재 밝기 값에서 10 %로 높이려면

xbacklight -inc 10

10 %를 줄이려면

xbacklight -dec 10 

경고 : xbacklight인텔에서만 작동하며 Radeon에서는 제대로 작동하지 않으며 모드 설정 드라이버 ( source ) 에서는 작동하지 않습니다 .


정말 간단한 명령처럼 보이지만 필요한 것은 xbacklight-10을 증가시켜 밝기를 10 % 증가시키는 것입니다. 그것도 가능합니까?
user69748

1
그래 넌 할수있어. 나는 이미 언급했다. xbacklight -inc 10으로 얻을 수 있습니다
rɑːdʒɑ

1
좋아, 이제 당신의 대답에 있습니다. 고마워, 나는 그것을 시도 할 것이다.
user69748

34
정말 간단 해 보이지만 불행히도 그것은 나에게 효과적이지 않습니다. 밝기는 단순히 -dec가 아니라 -set이 아닌 변경되지 않습니다. 버그가 곧 고쳐지기를 바랍니다. 그럼에도 감사합니다.
user69748

1
또한 사용할 수있는 속기가 있습니다. xbacklight +10; xbacklight -10; xbacklight =50;
Fordi

149

터미널을 열고 이것을 입력하십시오

xrandr -q | grep " connected"

그것은 당신에게 출력을 줄 것이다

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

LVDS1 디스플레이를 나타냅니다. 이제는

xrandr --output LVDS1 --brightness 0.5

0.5는 밝기 수준을 나타내며 0.0에서 1.0 사이입니다. 0.0-> Full black. 필요한 밝기 값을 선택해야합니다.

이것은 하드웨어 수준의 밝기를 변경하지 않는다 . 에서 randr수동 :

--brightness brightness현재 출력에 연결된 crtc 의 감마 값을 지정된 부동 값에 곱합니다 . 지나치게 밝거나 지나치게 어두운 출력에 유용합니다. 그러나 이것은 소프트웨어 전용 수정 이므로 하드웨어에서 실제로 밝기를 변경하도록 지원하는 경우 xbacklight를 사용하는 것이 좋습니다.


2
답변 해 주셔서 감사하지만 필요한 것은 xrandr와 같습니다. 밝기를 10 % 높이려면 10을 증가시킵니다. 그것도 가능합니까?
user69748

48
이것은 하드웨어 수준에서 밝기를 변화시키지 않는 것 같습니다
erjoalgo

12
이 답변에 너무 많은 투표권이 있습니다. 내 랩톱 화면은 어둠을 "에뮬레이션"하여 사물을 더 어둡게 보이게합니다 (야경이있는 비디오를 재생할 때와 마찬가지로 화면 밝기와는 관련이 없지만 배경 조명을 가리는 픽셀과는 관련이 없음). 밝기는 정확히 동일하며 픽셀이 더 어두워 졌기 때문에 이전보다 훨씬 더 많은 배터리를 낭비합니다.
Mephisto

2
그것은 내 하루와 눈도
절약 감사합니다

7
밝기가 가짜입니다. 밝기는 변하지 않으며 소프트웨어에 의해 렌더링됩니다.
user1970939

109

다음은 나를 위해 작동합니다.

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

가능한 최대 값이 /sys/class/backlight/intel_backlight/max_brightness파일 에 있다고 생각 합니다.

intel_backlight별표로 교체 하여 모든 백라이트에 적용 하십시오 .


16
@Ray 이것을 시도하십시오 : echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod

10
sudo echo 400 > /sys/class . .. ./brightness리디렉션 할 때 @Ray 는 echo가 아닌 shell에 의해 수행됩니다. 그리고 쉘은 여전히 ​​sudo가 아닌 일반 사용자로 실행됩니다. 이것이 권한이 거부 된 이유입니다. 루트 권한으로 파일에 쓸 유틸리티가 있어야하므로 tee작동합니다.
Sergiy Kolodyazhnyy 2014 년

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessRadeon APU 및 카드
Suici Doga

13
이것은 엄청나게 낮은 수준이지만 실제로 안정적으로 작동하는 유일한 것으로 보입니다. 그것은 조금 덜하면 추한 도착 때문에, 파일을 더 이상 밝기 설정이 필요하지 않습니다. sudo chmod 0646brightnesssudo
leftaroundabout

7
이것이 su 권한으로 설정되는 이유는 바이러스가 화면을 어둡게 만들 수 있고 놀라운 속도로 밝아 져서 궁극적으로 하드웨어 디스플레이를 손상시킬 수 있기 때문입니다. 90 년대에 화면 새로 고침 Hertz를 너무 빨리 조정하여 모니터가 튀길 수있는 바이러스가 발생했습니다. 따라서 이것에 대한 권한을 조심스럽게 조정하십시오.
RyanNerd

12

노트북의 경우

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

변경 80에 의해 [0-FF]가장 낮은 가장 높은 밝기를 얻을 수 있습니다. 지정된 값은 진수에, 그래서 80당신에게 줄 것이다 50%최대 밝기를.

데스크탑에서 감마 보정을 수행하려면 (나에 의해 테스트되지 않음),

xgamma -gamma .75

답변 해 주셔서 감사하지만 필요한 것은 setpci와 같습니다. 10을 증가시켜 밝기를 10 % 증가시킵니다. 그것도 가능합니까?
user69748

이 답변에 감사드립니다. 낮은 수준에서 작업이 수행되는 방식을 아는 것이 좋습니다
erjoalgo

1
이것은 Samsung NB30 Plus에서 나를 위해 일한 유일한 대답이었습니다.
OSE

이 기능이 작동하지 않는 것 같습니다. 일부 매개 변수를 변경해야한다면 해당 값을 어떻게 찾습니까?
Rasmus

고마워, 나는 노트북에있어 setpci작동하지 않았지만 작동했습니다 xgamma.
Philip Kirkbride

4

터미널에서 이것을 시도하십시오 :

xrandr --output LVDS1 --brightness 0.9

예를 들어 마지막 값을 원하는대로 변경할 수 있습니다. 0.2


1
1) 출력이 항상 LVDS1은 아니지만 xrandr --verbose를 사용하여 찾을 수 있습니다. 2) 백라이트 강도를 변경하지 않습니다
erjoalgo

4

이 스크립트를 작성하십시오.

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"

0에서 1 사이의 값으로 루트로 실행하십시오.

sudo ./set-brightness.sh 0.5
  • 시스템에가 없으면 /sys/class/backlight/acpi_video0디렉토리가 하나 이상 있어야하며 디렉토리는 장치마다 다를 수 있습니다 (예 :도 있습니다 radeon_bl0).
  • 다른 사람이있는 경우 값을 쌓으십시오 (따라서 루프; 다른 모든 값을 1.0으로 밀고 대상 값을 원하는 양으로 설정하십시오).
  • 항상 작동 acpi_video0 해야 하지만 항상 전체 범위의 물리적 밝기를 사용할 수있는 것은 아닙니다. 각각을 시도하고 가장 큰 영역을 가진 것을 "대상"으로 사용하십시오.

2
스크립트 /sys/class/backlight/*/brightness를 하드 코딩하는 대신 사용하는 것이 좋습니다 acpi_video0. 파일 경로를 일반화 할 수 있습니다 . 예를 들어 intel_backlight, 그렇지 않을 수도 acpi_video0있습니다. 이것이 제가 여기 스크립트에서
Sergiy Kolodyazhnyy

4

그놈과 함께 DBus 사용하기

키보드 제어를위한 밝기 단계도이 방법으로 구현할 수 있습니다.

# 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

노트


+1은 이것이 내부 LCD 디스플레이에서 잘 작동 함을 확인합니다. 이미 xrandr감마 및 밝기 스크립트로 제어되는 외부 모니터에는 영향을 미치지 않습니다 .
WinEunuuchs2Unix

3

@palacsint가 말했듯이 echo 244 > /sys/class/backlight/intel_backlight/brightness경로는 저에게 효과적입니다.

그러나 최대 및 최소 값에 다시 보냈다 /sys/class/backlight/intel_backlight/max_brightness/sys/class/backlight/intel_backlight/bl_power파일을 각각.

또한 컴퓨터가 현재 실행중인 실제 밝기는 /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 플라즈마 버전 : 5.14.3 :

위의 코드는 여전히 유효합니다. KDE 사용자 인 경우에만 작동합니다. 그러나이 경우 추가 소프트웨어가 필요하지 않습니다. "배터리 및 밝기"위젯을 사용할 때와 똑같은 동작을합니다. AFAIK는 실제 백라이트를 변경하지만 실제 백라이트는 변경 xrandr하지 않습니다.

위의 55는 100의 분수가 아니며 후자는 최대 밝기입니다. 대신 max_brightness와 관련이 있습니다.

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

스크립트에서 선호하는 "자동"버전도 있습니다.

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

참조 : qdbus , 솔리드 , 밝기


그것이 무엇을하는지 설명 할 수 있습니까?
rɑːdʒɑ

2

다음은 눈을 편안하게하는 데 도움이되는 짧은 줄입니다. 라인으로 crontaab을 만들거나 스크립트를 만드십시오.

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

2

위의 답변을 사용 하여이 스크립트 (홈 디렉토리에 brightness.sh로 저장 됨)를 작성하여 디스플레이 밝기를 수정했습니다 (노트북의 키보드에 엎지른 차 문제가 발생하여 사용할 수 없게 됨). 그것을 자유롭게 사용하십시오 (지정된 파일이있는 경우 ... 그렇지 않으면 파일의 변형을 지적하기 위해 어설프게 필요합니다).

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

많은 if 조건을 중첩하거나 중첩시키는 것보다 elif낫습니다 case. 또한 google.github.io/styleguide/shell.xml 과 같은 스타일 가이드를 읽고 더 나은 코드를 만드는 데 도움이되는 shellcheck와 같은 린터를 시도하는 것이 좋습니다. 몇 년 전에 스크립팅을 시작했을 때 누군가 나에게 이런 말을했으면 좋겠다. :)
LiveWireBT

1

ddccontrol 은 외부 모니터의 백라이트를 제어하기위한 또 다른 옵션입니다. 여기에서 외부 모니터의 백라이트를 전원의 50 %로 설정할 수 있습니다.

ddccontrol -p -r 0x10 -w 50

Redshift밝기 변화를 처리 하는 방식을 개선하기 위해이 문제에 대한 가능한 해결책을 찾았습니다 . 거기에서 나는 리눅스 커널 이 여러 장치들 사이의 호환성을 향상시키기 위한 패치 세트 가 있음을 발견했다 sysfs.

그 동안 ddccontrol이 여기에서 유일한 방법입니다. 평소와 같이, 아치 위키는 주제에 대한 전반적인 문서훌륭 합니다.


0

인터랙티브 ncurses 같은 UI를 사용하여 xbacklight

가난한 사람의 수녀. 명중 h하면 10 % 감소 l하고 , 명중 하면 10 % 증가합니다. 그런 다음 현재 광도를 표시하십시오.

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
)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.