이미지가 부드럽게 보이도록 LCD 화면의 밝기를 변경하는 방법
xrandr --output LVDS1 --gamma 0.8:0.8:1.1
감마 값만 변경하고 이미지 밝기는 변경하지 않습니다. --xrandr 밝기를 선택하지 않았습니다.
답변1
누구든지 이것을 우연히 발견했지만 설정 방법을 찾고 있는 경우백라이트통과하다 xrandr
:
$ xrandr --verbose
몇 가지 팁을 알려주세요:
$ xrandr --verbose
Screen 0: ...
...
BACKLIGHT: 268
range: (0, 852)
Backlight: 268
range: (0, 852)
...
몇 가지 속성이나 변수가 있습니다.백라이트; 설정할 수 있기를 바랍니다.
읽으면 옵션 $ man 1 xrandr
이 드러납니다 --set <property> <value>
. 그래서 우리는 그것을 가지고 있습니다:
$ xrandr --output <output> --set BACKLIGHT <value>
나는 이것을 사용하여 약 1/40 단위로 백라이트를 늘리거나 줄입니다.
$ xrandr --output eDP1 --set BACKLIGHT $(( $(xrandr --prop | awk '/^eDP1/,/^DP1/{if ($1 ~ /BACKLIGHT/) {print $NF; exit} }') + (852/40) ))
$ xrandr --output eDP1 --set BACKLIGHT $(( $(xrandr --prop | awk '/^eDP1/,/^DP1/{if ($1 ~ /BACKLIGHT/) {print $NF; exit} }') - (852/40) ))
답변2
위의 솔루션 중 어느 것도 나에게 충분하지 않았습니다.
사용 가능한 백라이트를 찾으려면 아래 내용을 사용하십시오.
ls /sys/class/backlight/
제 경우에는 그 폴더 안에 폴더가 있었습니다 intel_backlight
.
최대 밝기 파일을 찾으면 밝기를 설정할 수 있는 상한을 알려줍니다. 제 경우에는 다음 파일이었습니다.
/sys/class/backlight/intel_backlight/max_brightness
밝기를 최대로 설정:
sudo cp /sys/class/backlight/intel_backlight/max_brightness /sys/class/backlight/intel_backlight/brightness
답변3
(이것은 -h 옵션에 나열되어 있지 man xrandr
않지만 나에게 효과적이었습니다):
--밝기 밝기
현재 출력 crtc에 첨부된 감마 값에 지정된 부동 소수점 값을 곱합니다. 너무 밝거나 너무 어두운 출력에 유용합니다. 그러나 이것은 단지 소프트웨어 수정일 뿐이며 하드웨어가 실제로 밝기 변경을 지원하는 경우 xbacklight를 사용하는 것이 더 나을 수 있습니다.
LCD 밝기를 조작하기 위한 보편적인 표준이 있는지는 모르겠습니다. 그렇지 않은 경우 하드웨어 드라이버 등에 문제가 있을 수 있습니다.
xbacklight -get
필립스 LED를 사용해 보면 다음과 같습니다 .
»xbacklight -get
No outputs have backlight property
패널의 작은 버튼에 갇힌 것 같아요. ;)
참고: xrandr은 --brightness
세 개의 동일한 값을 사용하는 것과 정확히 동일한 작업을 수행합니다 --gamma
.
답변4
다른 모든 답변을 사용 가능한 방법(먼저 xbacklight
, 그 다음 .../intel_backlight/...
, 그 다음 ) 을 사용하는 스크립트로 결합했습니다 xrandr
. 하나의 매개변수가 필요합니다(참조:용법:스크립트 내에서).
테스트했지만 너무 철저하지는 않았습니다.
#!/usr/bin/env bash
# Change the screen brightness.
# See the output of "$0 -h" for details.
# Exit immediately on each error and unset variable;
# see: https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/
#set -Eeuo pipefail
set -Eeu
APP_NAME="Screen Brightness Changer"
cmd=${1:-get}
bl_dir=/sys/class/backlight/intel_backlight
function print_help() {
script_name="$(basename "$0")"
echo "${APP_NAME} - Allows to change the screen brightness."
echo "It may do so using the hardware backlight or through software manipulation of pixel values sent to the screen."
echo
echo "Usage:"
echo " $script_name [OPTIONS] COMMAND"
echo "Commands:"
echo " [on|off] set the brightness to either 100% or 0%"
echo " [0.0, 1.0] set the brightness to the given fraction"
echo " [+-][0.0, 1.0] increase/decrease the brightness by the given fraction"
echo " [0, 100]% set the brightness to the given percentage"
echo " [+-][0, 100]% increase/decrease the brightness by the given percentage"
echo "Options:"
echo " -h, --help Print this usage help and exit"
echo "Examples:"
echo " $script_name # Returns the current brightness"
echo " $script_name 1.0 # Set to full brightness"
echo " $script_name 100% # Set to full brightness"
echo " $script_name +0.1 # Increase brightness by 10%"
echo " $script_name -10% # Reduce brightness by 10%"
echo " $script_name --help # Print this usage help and exit"
}
# read command-line args
POSITIONAL=()
while [[ $# -gt 0 ]]
do
arg="${1}"
shift # $2 -> $1, $3 -> $2, ...
case "${arg}" in
-h|--help)
print_help
exit 0
;;
*) # non-/unknown option
POSITIONAL+=("${arg}") # save it in an array for later
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
# Check if first number is larger then the second.
# This can do floating-point comparison.
function _isLarger() {
return "$(awk -v n1="$1" -v n2="$2" \
'BEGIN { if (n1 >= n2) { print("0") } else { print("1") } }')"
}
# Convert potentially relative (+|-X) into new absolute value.
# If relative=false, return the value.
# Else, return current +|- the value.
function _makeAbs() {
local _cur="$1"
local _rel="$2"
local _rel_sign="$3"
local _val="$4"
local _new=""
if $_rel
then
_new=$(printf "%.3f" "$(awk "BEGIN { print($_cur + ($_rel_sign * $_val)) }")")
else
_new="$_val"
fi
echo -n "$_new"
}
# Limits the input value (float) to the range [0.0, 1.0] (inclusive).
function _limit01() {
local _val="$1"
local _new=""
if _isLarger "$_val" 1
then
_new="1.0"
elif _isLarger 0 "$_val"
then
_new="0.0"
else
_new="$_val"
fi
echo -n "$_new"
}
# Post-process/parse the input command/value.
val_rel=$(echo "$cmd" | grep -q '^[+-]' && echo -n "true" || echo -n "false")
val_rel_sign=$(echo "$cmd" | grep -q '^+' && echo -n "1" || echo -n "-1")
cmd=$(echo "$cmd" | sed -e 's|^[+-]||')
# Calculate the (float) fractional value -
# absolute or relative -
# indicated by the given command.
if [ "$cmd" == "on" ]; then
# turn fully bright
val_new=1.0
elif [ "$cmd" == "off" ]; then
# turn the screen backlight off
val_new=0.0
elif echo "$cmd" | grep -q '%$'; then
val_new=${cmd/\%/}
val_new=$(printf "%.3f" "$(awk "BEGIN { print($val_new / 100) }")")
elif _isLarger "$cmd" 0 && _isLarger 1 "$cmd"; then
val_new=$cmd
elif [ "$cmd" == "get" ]; then
val_new="0"
val_rel="true"
val_rel_sign="1"
else
>&2 echo "Invalid command '$cmd'!"
exit 1
fi
# Evaluate which backlight/brightness changeing method to use
mth_xbacklight=false
mth_bare=false
mth_xrandr=false
if which xbacklight > /dev/null 2>&1 && xbacklight -get > /dev/null 2>&1
then
echo "Using 'xbacklight' (hardware) ..."
# This requires the `xbacklight` utility installed
# and the systems backlight to be suported by it.
# This method actually changes the backlight brightness (hardware).
mth_xbacklight=true
elif [ -d "$bl_dir" ] && [ "$EUID" -eq 0 ]
then
echo "Using '$bl_dir' (hardware) ..."
# This requires the $bl_dir directory to be present
# and this script to be run with root priviledges
# in order to be able to write ot that dir.
# This method actually changes the backlight brightness (hardware).
mth_bare=true
elif which xrandr > /dev/null 2>&1
then
echo "Using xrandr (software) ..."
# This has no prerequisite; it should always work.
# This method only manipulates the pixel values sent to the screen, imitating more/less brightness (software).
mth_xrandr=true
else
>&2 echo "No low-level-method chosen!"
exit 1
fi
# Fetch the current brightness value as fraction in [0.0, 1.0]
if $mth_xbacklight
then
val_cur_perc=$(xbacklight -get)
val_cur=$(printf "%.3f" "$(awk "BEGIN { print($val_cur_perc / 100) }")")
elif $mth_bare
then
val_max=$(cat "$bl_dir/max_brightness")
val_cur_abs=$(cat "$bl_dir/brightness")
val_cur=$(printf "%.3f" "$(awk "BEGIN { print(1.0 * $val_cur_abs / $val_max) }")")
elif $mth_xrandr
then
val_cur=$(xrandr --verbose | grep -i "brightness" | sed -e 's|.*: ||')
else
>&2 echo "No low-level-method chosen!"
exit 1
fi
# Calculate the new brightness value as fraction in [0.0, 1.0]
val_new=$(_limit01 "$(_makeAbs "$val_cur" "$val_rel" "$val_rel_sign" "$val_new")")
val_new_perc=$(printf "%.0f" "$(awk "BEGIN { print($val_new * 100) }")")
# Just print the (new == old) current brightness percentage and exit
if [ "$cmd" == "get" ]
then
echo "${val_new_perc}%"
exit 0
fi
# Set the new brightness value
if $mth_xbacklight
then
xbacklight -set "$val_new_perc"
elif $mth_bare
then
val_max=$(cat "$bl_dir/max_brightness")
val_new_abs=$(printf "%.0f" "$(awk "BEGIN { print($val_new * $val_max) }")")
echo -n "$val_new_abs" | tee "$bl_dir/brightness"> /dev/null
elif $mth_xrandr
then
display=$(xrandr -q | grep " connected" | sed -e 's| .*||')
xrandr --output "$display" --brightness "$val_new"
else
>&2 echo "No low-level-method chosen!"
exit 1
fi