要解决错误#1005495(无法通过热键更改LCD亮度)的问题,我想使用一个命令行查询来增加LCD亮度,而使用一个命令行查询来降低LCD的亮度。然后,我可以将热键映射到每个查询。
问题是:我不知道如何在命令行上增加和减少LCD的亮度。你呢?
要解决错误#1005495(无法通过热键更改LCD亮度)的问题,我想使用一个命令行查询来增加LCD亮度,而使用一个命令行查询来降低LCD的亮度。然后,我可以将热键映射到每个查询。
问题是:我不知道如何在命令行上增加和减少LCD的亮度。你呢?
Answers:
我们要做的另一种方法是使用另一个名为xbacklight的新程序,打开您的终端并键入
sudo apt-get install xbacklight
然后输入 xbacklight -set 50
有50个代表亮度范围,我们可以从0达到100。
您还可以将亮度从当前值增加或减少到指定的水平。如前所述,如果您想将亮度从当前值增加到10%,则可以
xbacklight -inc 10
并减少10%,您可以给这个
xbacklight -dec 10
警告:xbacklight
仅适用于Intel,不适用于Radeon,也不适用于模式设置驱动程序(source)。
xbacklight +10; xbacklight -10; xbacklight =50;
打开您的终端并输入
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->全黑。因此,您必须选择所需的亮度值。
这不会改变硬件级别的亮度。从randr
手册:
--brightness brightness
将当前连接到输出的crtc 的伽玛值乘以指定的浮点值。对于过亮或过暗的输出有用。但是,这是仅软件的修改,如果您的硬件支持实际更改亮度,则您可能会更喜欢使用xbacklight。
以下对我有用:
echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness
我想最大可能的值在/sys/class/backlight/intel_backlight/max_brightness
文件中。
替换intel_backlight
为星号以应用于所有背光。
echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness
。
sudo echo 400 > /sys/class . .. ./brightness
是由shell而非回声完成的。Shell仍然以您的普通用户身份运行,而不是以sudo身份运行。这就是为什么它授予的权限被拒绝。您需要有一个实用程序,该实用程序将以root权限写入文件,这就是为什么tee
可以使用的原因。
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightness
适用于radeon APU和卡
sudo chmod 0646
使用brightness
文件,它会变得不那么难看,因此sudo
不再需要设置亮度。
对于笔记本电脑,
sudo setpci -s 00:02.0 F4.B=80
更改80
通过[0-FF]
获得最低最高亮度。指定的值以十六进制表示,因此80
将为您提供50%
最大亮度。
为了让台式机进行伽玛校正(未经我测试),
xgamma -gamma .75
setpci
没有用,但是可以xgamma
用。
在终端中尝试以下操作:
xrandr --output LVDS1 --brightness 0.9
您可以根据需要更改最后一个值,例如。0.2
编写此脚本:
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"
以root身份运行它,其值介于0和1之间。
sudo ./set-brightness.sh 0.5
/sys/class/backlight/acpi_video0
,则其中至少应有一个目录,该目录可能是特定于设备的(radeon_bl0
例如,我也有一个)。 acpi_video0
应该总是可以工作,但它并不总是具有全部可用的物理亮度。尝试每一种,并使用色域最大的那一种作为“目标”/sys/class/backlight/*/brightness
而不是尝试硬编码acpi_video0
到脚本中。它将允许归纳到文件的路径,该路径可以不同-例如,具有has intel_backlight
,而不是acpi_video0
。这就是我在此处的脚本中
也可以使用此方法来实现用于键盘控制的亮度步进。
# 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
/sys/class/backlight
这样。xbacklight
并非总是工作。xrandr
只是做伽玛校正xrandr
伽玛和亮度脚本控制的外部显示器。
qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightness 55
上面的代码仍然有效。仅当您是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
使用以上答案,我创建了此脚本(在我的主目录中保存为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之类的样式指南,并尝试像shellcheck这样的小工具,因为它有助于您创建更好的代码。我希望几年前我开始编写脚本时有人告诉过我。:)
使用类似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
)