119 lines
2.4 KiB
Bash
Executable File
119 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
BRIGHTNESS_INCREMENT=.1
|
|
R_INCREMENT=0
|
|
G_INCREMENT=.1
|
|
B_INCREMENT=.2
|
|
|
|
xrandr_settings_of_display () {
|
|
if [ "$#" -ne 1 ] ; then
|
|
echo "Usage : xrandr_settings_of_display <display_name>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
out="$(xrandr --verbose | sed -e "1,/^$1/d" | sed '/^ /,$d')"
|
|
|
|
if [ -z "$out" ] ; then
|
|
echo "ERROR, empty output for command: xrandr_settings_of_display $@" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "$out"
|
|
}
|
|
|
|
|
|
brigthness_of_display () {
|
|
if [ "$#" -ne 1 ] ; then
|
|
echo "Usage : brigthness_of_display <display_name>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
xrandr_settings_of_display "$1" | grep -Po 'Brightness: \K.*'
|
|
}
|
|
|
|
|
|
raw_gamma_of_display () {
|
|
if [ "$#" -ne 1 ] ; then
|
|
echo "Usage : raw_gamma_of_display <display_name>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
xrandr_settings_of_display "$1" | grep -Po 'Gamma: \K.*' | tr ':' ' '
|
|
}
|
|
|
|
gamma_of_display () {
|
|
if [ "$#" -ne 1 ] ; then
|
|
echo "Usage : gamma_of_display <display_name>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
read r g b <<< "$(raw_gamma_of_display "$1")"
|
|
echo "$r $g $b -> $(invert $r) $(invert $g) $(invert $b)" >&2
|
|
echo "$(invert $r) $(invert $g) $(invert $b)"
|
|
}
|
|
|
|
invert () {
|
|
if [ "$#" -ne 1 ] ; then
|
|
echo "Usage : invert <float_number>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "1/$1" | bc -l | grep -o '.*\...'
|
|
}
|
|
|
|
|
|
############### Args
|
|
|
|
if [ "$#" -ne 2 ] ; then
|
|
echo "Usage : $0 <brightness|redness> +|-|=" >&2
|
|
exit 1
|
|
fi
|
|
|
|
property="$1"
|
|
action="$2"
|
|
|
|
if [ ! "$action" = - ] && [ ! "$action" = + ] && [ ! "$action" = '=' ] ; then
|
|
echo "Bad action '$action'. Expected + - or =."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
i=0
|
|
xrandr --listactivemonitors | tail -n +2 | cut -d ' ' -f 6 | while read monitor ; do
|
|
args=''
|
|
if [ "$i" -eq 0 ] ; then
|
|
((i=i+1))
|
|
case "$property" in
|
|
brightness)
|
|
if [ "$action" = '=' ] ; then
|
|
args="--brightness 1"
|
|
else
|
|
b="$(brigthness_of_display "$monitor")"
|
|
b="$( echo "$b $action $BRIGHTNESS_INCREMENT" | bc -l )"
|
|
args="--brightness $b"
|
|
fi
|
|
;;
|
|
redness)
|
|
if [ "$action" = '=' ] ; then
|
|
args="--gamma 1:1:1"
|
|
else
|
|
read r g b <<< "$(gamma_of_display "$monitor")"
|
|
|
|
rnew="$( echo "$r $action $R_INCREMENT" | bc -l )"
|
|
gnew="$( echo "$g $action $G_INCREMENT" | bc -l )"
|
|
bnew="$( echo "$b $action $B_INCREMENT" | bc -l )"
|
|
args="--gamma $rnew:$gnew:$bnew"
|
|
#echo "from $r:$g:$b to $rnew:$gnew:$bnew"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Invalid property $property"
|
|
exit 1
|
|
esac
|
|
else
|
|
args="--same-as $monitor"
|
|
fi
|
|
xrandr --output "$monitor" $args
|
|
echo xrandr --output "$monitor" $args
|
|
done
|