我有一台带 OLED 显示屏的 Alienware 13 R3,这是我第一次能够使用 xrandr 命令更改亮度。问题是 OLED 显示屏没有背光,所以我无法使用键盘或任何其他方式更改亮度。现在我知道我可以更改它,我想设置一个键绑定来将亮度更改 0.1。我使用此命令来更改亮度:
xrandr --output eDP-1-1 --brightness .5
有谁知道该使用什么命令来不设置亮度,而是增加或减少某个值,这样我就可以将宏绑定到它。提前谢谢!
PS:我对 Linux 还很陌生,所以请不要太苛刻我 :P
答案1
将下面的 bash 脚本复制到名为bright
然后将其标记为可执行chmod a+x bright
Bash 脚本
#!/bin/bash
MON="DP-1-1" # Discover monitor name with: xrandr | grep " connected"
STEP=5 # Step Up/Down brightnes by: 5 = ".05", 10 = ".10", etc.
CurrBright=$( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
CurrBright="${CurrBright##* }" # Get brightness level with decimal place
Left=${CurrBright%%"."*} # Extract left of decimal point
Right=${CurrBright#*"."} # Extract right of decimal point
MathBright="0"
[[ "$Left" != 0 && "$STEP" -lt 10 ]] && STEP=10 # > 1.0, only .1 works
[[ "$Left" != 0 ]] && MathBright="$Left"00 # 1.0 becomes "100"
[[ "${#Right}" -eq 1 ]] && Right="$Right"0 # 0.5 becomes "50"
MathBright=$(( MathBright + Right ))
[[ "$1" == "Up" || "$1" == "+" ]] && MathBright=$(( MathBright + STEP ))
[[ "$1" == "Down" || "$1" == "-" ]] && MathBright=$(( MathBright - STEP ))
[[ "${MathBright:0:1}" == "-" ]] && MathBright=0 # Negative not allowed
[[ "$MathBright" -gt 999 ]] && MathBright=999 # Can't go over 9.99
if [[ "${#MathBright}" -eq 3 ]] ; then
MathBright="$MathBright"000 # Pad with lots of zeros
CurrBright="${MathBright:0:1}.${MathBright:1:2}"
else
MathBright="$MathBright"000 # Pad with lots of zeros
CurrBright=".${MathBright:0:2}"
fi
xrandr --output "$MON" --brightness "$CurrBright" # Set new brightness
# Display current brightness
printf "Monitor $MON "
echo $( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
- 更改
MON="DP-1-1"
为您的显示器名称,即MON="HDMI-1"
- 使用以下方式发现您的显示器名称
xrandr | grep " connected"
- 改变
STEP=5
你的步长值,例如STEP=2
不太明显
使用以下命令调用脚本:
bright Up
或bright +
按步进值增加亮度bright Down
或bright -
按步进值降低亮度bright
(无参数)获取当前亮度级别
希望可以轻松地通过 Google 搜索 bash / shell 命令来进行教育,但如果有任何问题,请随时询问:)
在回答完这个问题 8 分钟后,我突然想到我可以使用bc
浮点运算,这样可以节省大约 10 行代码,并节省编写代码所花的 1.5 小时的时间耸肩。