コマンドラインから(またはスクリプト経由で)LCDの輝度を変更する方法は?


162

回避するには、バグ#1005495(不可能ホットキーを経由してLCDの明るさを変える)、私は私のLCDの明るさを減少させるための1つのコマンドラインを高めるためのクエリと1を持っているしたいと思います。次に、このクエリのそれぞれにホットキーをマップできます。

問題は、コマンドラインでLCDの輝度を増減する方法がわからないことです。あなたは?



2
Lekensteynに感謝しますが、lsmod | grep ^ i915から出力が得られません(受け入れられた解決策を参照)。まだ解決策を探しています。
user69748

回答:


157

これを行う必要があるもう1つの方法は、xbacklightという名前の別の新しいプログラムを使用して、ターミナルを開いてこれを入力することです

sudo apt-get install xbacklight

次にこれを入力 xbacklight -set 50

明るさの範囲を表す50があり、0から最大100まで取得できます。

現在の明るさから指定されたレベルまで明るさを増減することもできます。既に述べたように、現在の明るさの値から10%に増やしたい場合は、

xbacklight -inc 10

10%減らすためにこれを与えることができます

xbacklight -dec 10 

警告xbacklightIntelでのみ動作し、Radeonでは正しく動作せず、モード設定ドライバ(source)では動作しません。


本当に単純なコマンドのように見えますが、私が必要とするのはxbacklightのようなものです-輝度を10パーセント上げるには10を増やします。それも可能ですか?
user69748

1
はい、できます。私はすでにそれについて言及しました。xbacklight -inc 10
rɑːdʒɑ12年

1
わかりました、今あなたの答えにあります。どうもありがとう、私はそれを試してみます。
user69748

34
それは本当に簡単に見えますが、残念ながらそれは私にはうまくいきません。輝度は-decでも-setでもなく、単に変化しません。バグがすぐに修正されることを期待する必要があると思います。それでもありがとう。
user69748

2
さらに、使用できる略記があります 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->フルブラック.so必要な明るさの値を選択する必要があります。

これはハードウェアレベルで明るさを変えませんrandrマニュアルから:

--brightness brightness乗算ガンマ現在指定されているフローティング値に出力するように取り付けられたCRTCに値。明るすぎる、または薄暗い出力に役立ちます。ただし、これはソフトウェアのみの変更であり、ハードウェアが実際に輝度を変更するサポートを持っている場合は、おそらくxbacklightを使用することをお勧めします。


2
答えてくれてありがとう、しかし私が必要とするのはxrandrのようなものです-明るさを10パーセント上げるには10を増やします。それも可能ですか?
user69748

48
これは、ハードウェアレベルで明るさを変更しないようです
erjoalgo

12
残念なことに、この答えは非常に多くの票を得ました。私のラップトップ画面は、物事を暗くすることで暗闇を「エミュレート」します(夜景でビデオを再生するときのように、それは画面の明るさとは関係なく、背景光をマスクするピクセルです)。明るさはまったく同じで、現在よりもピクセルが暗いため、以前よりも多くのバッテリーを無駄にします。
メフィスト14年


7
それは明るさを偽造します。明るさは変化せず、ソフトウェアによってレンダリングされます。
-user1970939

110

次は私のために働く:

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 は、エコーではなくシェルによって行われます。また、シェルはsudoではなく通常のユーザーとして実行されます。それが許可を拒否する理由です。ルート権限でファイルに書き込むユーティリティが必要teeです。これが機能する理由です。
セルギーコロディアズニー

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessラディオンAPUとカードの場合
Suici Doga

13
これはばかげて低レベルですが、実際には確実に機能する唯一のものであるようです。ファイルを使用すると、見た目がやや悪くsudo chmod 0646なりbrightnessますので、sudo明るさを設定する必要はありません。
左回り

7
これがsu許可に設定されている理由は、ウイルスが恐らく画面を暗くし、信じられないほどの速度で明るくなり、最終的にハードウェアディスプレイを損傷する可能性があるためです。90年代に、画面の更新Hertzが非常に急速に調整されてモニターがフライになるウイルスに遭遇しました。そのため、この権限を慎重に調整してください。
ライアンナード

12

ラップトップの場合、

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

を変更80[0-FF]て、最低から最高の明るさを取得します。指定された値は16進数であるため、最大の明るさ80が得られます50%

デスクトップでガンマ補正を行うには(私はテストしていません)、

xgamma -gamma .75

あなたの答えに感謝しますが、私が必要とするのはsetpciのようなものです-10を増やして明るさを10パーセント増加させます。それも可能ですか?
user69748

この答えをありがとう、より低いレベルで物事がどのように行われるかを知ることは良いことです
エルジョアルゴ

1
これが、サムスンNB30 Plusで私にとって有効な唯一の答えでした。
OSE

これを機能させることはできないようです。おそらく、いくつかのパラメーターを変更する必要があります。もしそうなら、どのようにして適切な値を見つけるのですか?
ラスマス14年

おかげで私はラップトップに乗っていて、機能setpciしませんでしたが機能xgammaしました。
フィリップカークブライド

5

Gnomeで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

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までの任意の値で、rootとして実行します。

sudo ./set-brightness.sh 0.5
  • システムにが存在しない場合は、/sys/class/backlight/acpi_video0デバイス固有のディレクトリが少なくとも1つ存在する必要があります(radeon_bl0たとえば、もあります)。
  • 他にも値がある場合は、値のスタックを念頭に置いてください(ループが発生します。他のすべて値を1.0にプッシュしてから、ターゲット値を目的値に設定します)。
  • 一方でacpi_video0 なければならない、常に動作し、それは常に使用可能な物理明るさの完全な範囲を持っていません。それぞれを試して、最大の色域を持つものを「ターゲット」として使用してください

2
スクリプト/sys/class/backlight/*/brightnessにハードコーディングacpi_video0する代わりに、使用することを検討してください。ファイルへのパスを一般化することができますが、これは異なる場合がintel_backlightありacpi_video0ます。それは私が私の中で使用されてきたものだ、ここでスクリプト
Sergiy Kolodyazhnyy

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 Plasmaバージョン:5.14.3:

上記のコードはまだ有効です。KDEユーザーの場合にのみ機能します。ただし、その場合、追加のソフトウェアは必要ありません。「バッテリーと輝度」ウィジェットを使用する場合とまったく同じ動作になります。私の知る限り、物理的なバックライトは変化しますが、そう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

参照:qdbussolidbrightness


それが何をするのか説明できますか?
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

あなただけの場合と同様の条件、多くのネストよりも良い行うことができますelifまたはより良いをcase。また、google.github.io / styleguide / shell.xmlのようなスタイルガイドを読んで、シェルチェックのようなリンターを試してみることをお勧めします。私が何年も前にスクリプトを書き始めたときに、誰かがこれを教えてくれたらと思います。:)
LiveWireBT

1

ddccontrolは、外部モニターのバックライトを制御する別のオプションです。ここで、外部モニターのバックライトをその電力の50%に設定できます。

ddccontrol -p -r 0x10 -w 50

この問題の可能な解決策を探して、Redshift輝度の変化を処理する方法を改善しました。そこから、Linuxカーネル用のパッチセットがあり、デバイス間の互換性を改善し、ラップトップと外部画面が同様に機能することがわかりましたsysfs

それまでの間、ddccontrolはここで私のために機能する唯一のものです。いつものように、Arch wiki にはトピックに関する総合的なドキュメントもあります。


0

使用するインタラクティブなncursesのようなUI xbacklight

貧しい男のncurses。ヒットする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
)

0

絶対輝度を設定するには(ラップトップユーザーの場合):

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.