要解决错误#1005495(无法通过热键更改LCD亮度)的问题,我想使用一个命令行查询来增加LCD亮度,并使用一个命令行查询来降低LCD的亮度。然后,我可以将一个热键映射到每个查询。

问题是:我不知道如何在命令行上增加和减少LCD的亮度。你呢?

评论

可能无法更改联想笔记本电脑的亮度

谢谢,Lekensteyn,但这不是自lsmod以来的重复。 grep ^ i915没有给出任何输出(请参阅接受的解决方案)。仍在寻找解决方案。

#1 楼

打开您的终端并输入

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。


评论


谢谢您的回答,但我需要的是xrandr之类的东西-增加10可使亮度增加10%。那有可能吗?

–user69748
2012年12月14日上午11:50

这似乎并没有改变硬件级别的亮度

–erjoalgo
13-10-18在6:29

太糟糕了,这个答案获得了很多选票。我的笔记本电脑屏幕“模仿”黑暗,也就是说通过使事物看起来更暗(就像在播放带夜景的视频时一样,这与屏幕亮度无关,而与遮盖背景光的像素无关)。亮度完全一样,因为像素比现在更暗,浪费的电池比以前更多。

–墨菲斯托
2014年11月16日15:47



伪造亮度。亮度不变,由软件渲染。

–user1970939
16年4月1日在20:58

我可以确认这只是模拟亮度,而不会改变显示器背景光的亮度。有趣的是,鼠标指针的亮度没有改变,使其比桌面其余部分要明亮得多。

– nyi
16-4-14的8:24

#2 楼

注意:xbacklight仅适用于Intel,不适用于Radeon,也不适用于模式设置驱动程序(源)。它也只能在X11上使用,而不能在Wayland上使用。

我们要做的另一种方法是使用另一个名为xbacklight的新程序,打开您的终端并键入此
sudo apt-get install xbacklight

然后键入此xbacklight -set 50
亮度范围有50个代表,我们可以将亮度从0提高到100。
您还可以将亮度从当前值增加或减少到指定水平。到当前亮度值的10%,那么您可以给此
xbacklight -inc 10

,降低10%您可以给这个亮度
xbacklight -dec 10 


评论


看起来像一个非常简单的命令,但是我需要的是xbacklight之类的东西-增加10可以将亮度增加10%。那有可能吗?

–user69748
2012年8月24日在9:31

@ user69748答案已编辑

–rɑːdʒɑ
2012年8月24日上午10:47

是的你可以。我已经提到了。所以你可以通过xbacklight -inc 10来获得

–rɑːdʒɑ
2012年8月24日在16:53

这看起来确实很简单,但不幸的是,它对我不起作用。亮度根本不会改变,不会使用-dec和-set来改变。我想我必须希望该错误能尽快得到解决。尽管如此,还是谢谢你。

–user69748
2012年9月4日14:38



此外,还有一个速记可以使用:xbacklight +10; xbacklight -10; xbacklight = 50;

–福特
16 Mar 9 '16 at 18:48

#3 楼

以下对我有用:

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


我想可能的最大值在/sys/class/backlight/intel_backlight/max_brightness文件中。

用星号替换intel_backlight到所有背光。

评论


@Ray尝试一下:echo 400 | sudo tee / sys / class / backlight / intel_backlight /亮度。

– Mygod
15年11月28日在17:39

在执行sudo echo 400> / sys / class时使用@Ray。 .. ./亮度重定向是通过外壳而不是通过回声来完成的。 Shell仍以您的普通用户身份运行,而不是以sudo身份运行。这就是为什么它授予的权限被拒绝。您需要有一个实用程序,该实用程序将以root权限写入文件,这就是tee工作的原因。

– Sergiy Kolodyazhnyy
16 Mar 9 '16 at 19:37

回声400 sudo tee / sys / class / backlight / radeon_bl0 /亮度radeon APU和卡

– Suici Doga
16年4月1日在11:40

这是低级的,但实际上似乎是唯一可靠的方法。如果您对sudo chmod 0646亮度文件进行设置,它会变得不那么丑陋,因此不再需要sudo来设置亮度。

–leftaround关于
16年5月24日21:00

将此设置为su权限的原因是,可以想象,病毒可能会使您的屏幕变暗并以难以置信的速度变亮,最终损坏您的硬件显示。在90年代,我遇到了一种病毒,该病毒会迅速调整屏幕刷新频率,以至于您的显示器无法正常工作。因此,请谨慎调整权限。

– RyanNerd
16-10-21在16:21

#4 楼

对于笔记本电脑,

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


80更改为[0-FF],以获得最低的最高亮度。
指定的值以十六进制表示,因此80将为您提供50%的最大亮度。

用于台式机进行伽玛校正(未经我测试),

xgamma -gamma .75


评论


谢谢您的回答,但是我需要的是setpci之类的东西-增加10可使亮度增加10%。那有可能吗?

–user69748
2012年12月14日上午11:50

这是唯一适用于Samsung NB30 Plus的答案。

–OSE
13年10月21日在18:33

我似乎无法正常工作。。也许应该更改一些参数,如果可以,如何找到合适的值?

–拉斯穆斯
2014年10月2日在8:27

谢谢,我在笔记本电脑上,setpci不起作用,但xgamma起作用。

– Philip Kirkbride
18年5月2日在13:26

如果要使用[0-255]范围,则​​可以使用$(echo“ obase = 16; ibase = 10; 128” | bc)(约50%)。 ibase = 10;是可选的。

–巴勃罗·比安奇(Pablo Bianchi)
20/11/15在17:56



#5 楼

将DBus与Gnome配合使用
您可以使用以下方法增加/降低亮度:
 # 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
 

注意事项


无需root特权!不同于/sys/class/backlight的方式

来源:Arch Wiki


xbacklight并不总是有效


xrandr只是进行伽马校正

对于KDE,请检查此答案



评论


+1确认这在内部LCD显示屏上效果很好。它不会影响已经由xrandr gamma和亮度脚本控制的外部显示器。

–WinEunuuchs2Unix
19年4月6日在16:25



#6 楼

编写此脚本:

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  is a float (which it 
# should be)
LOGIC="$(echo "( * ${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应该总是可以工作,并非总是具有全部可用的物理亮度。尝试每一种,并将色域最大的一种用作“目标”。


评论


考虑使用/ sys / class / backlight / * / brightness,而不是尝试将acpi_video0硬编码到脚本中。它将允许通用化文件的路径,该路径可以不同-例如,我具有intel_backlight而不是acpi_video0。这就是我在这里的脚本中使用的

– Sergiy Kolodyazhnyy
16 Mar 9 '16 at 19:41

#7 楼

在终端中尝试以下操作:

xrandr --output LVDS1 --brightness 0.9


您可以根据需要更改最后一个值,例如。 0.2

评论


1)输出并不总是LVDS1,但用户可以使用xrandr --verbose来查找2)不更改背光强度

–erjoalgo
13-10-18在6:31

#8 楼

这条短线可以帮助您放松一下眼睛。只需使用该行创建crontaab或编写脚本

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


#9 楼

正如@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中存在正在运行的

#10 楼

KDE 4.12:

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


KDE Plasma版本: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ʒɑ
2014年4月8日在18:27

#11 楼

使用以上答案,我创建了此脚本(保存在我的主目录中,名为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甚至更好的情况)更好。另外,我建议阅读google.github.io/styleguide/shell.xml之类的样式指南,并尝试像shellcheck这样的小工具,因为它可以帮助您创建更好的代码。我希望几年前我开始编写脚本时有人告诉过我。 :)

– LiveWireBT
19年1月2日,下午5:38

#12 楼

ddccontrol是用于控制外部显示器背光的另一种选择。在这里,我可以使用以下方法将外接显示器的背光设置为其功率的50%:

ddccontrol -p -r 0x10 -w 50


我在寻找可能的解决方案来改善Redshift处理亮度的方式变化。通过那里,我发现有一个用于Linux内核的补丁程序集,可以改善跨设备的兼容性,从而使笔记本电脑和外部屏幕可以通过sysfs来类似地工作。

同时,ddccontrol是唯一要做的事情在这里为我工作。与往常一样,Arch Wiki上也有关于该主题的完整文档。

#13 楼

设置绝对亮度(对于笔记本电脑用户):

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


#14 楼

使用xbacklight的类似ncurses的交互式UI

一个穷人的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
)


#15 楼

根据placsint的回答

cd /sys/class/backlight/intel_backlight/
cat max_brightness | sudo tee brightness


评论


askubuntu.com/a/469040的副本

–卡雷尔
20 Mar 11 '20 at 12:38

#16 楼

我使用i3作为窗口管理器,并且已经卸载了gnome,所以gnome解决方案对我不起作用。而其他基于软件的方法只是使屏幕看起来更黑。
所以,经过一番阅读之后,我遇到了Brightctl。
使用apt install进行安装。

sudo apt install brightctl

您将需要权限来修改显示设备,只有视频组(显然是root)的成员才能执行此操作。因此,请确保将当前用户添加到视频组。您可以这样操作:

sudo usermod $(whoami) -a -G video

安装后,我可以使用以下命令将亮度增加/减少10,这是非常渐进的,可以给我更多的控制权。 :

#Increase brightness
/usr/bin/brightnessctl -d intel_backlight set +10

#Reduce brightness
/usr/bin/brightnessctl -d intel_backlight set 10-


我在我的i3配置中添加了快捷键。这是按键绑定的片段。

#Increase brightness
bindsym XF86MonBrightnessUp exec  /usr/bin/brightnessctl -d intel_backlight set +10

#Reduce brightness
bindsym XF86MonBrightnessDown exec /usr/bin/brightnessctl -d intel_backlight set 10-