105 lines
1.9 KiB
Text
105 lines
1.9 KiB
Text
|
#!/bin/bash
|
||
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||
|
|
||
|
. /etc/profile
|
||
|
|
||
|
# ARGS:
|
||
|
#
|
||
|
# 1 - property to adjust (gamma (brightness)/contrast/saturation/hue)
|
||
|
# 2 - up/down or a defined value
|
||
|
|
||
|
PROPERTY=${1}
|
||
|
NEWVAL=${2}
|
||
|
|
||
|
# Command usage:
|
||
|
# drm_tool set /dev/dri/card0 133 saturation value
|
||
|
|
||
|
# Define the basics
|
||
|
MIN=1
|
||
|
MAX=100
|
||
|
STEP=1
|
||
|
|
||
|
if [ ! -e /dev/dri/card0 ]
|
||
|
then
|
||
|
echo "ERROR: No display found."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
log() {
|
||
|
$DEBUG && echo "Info: ${*}" >>/var/log/display.log
|
||
|
}
|
||
|
|
||
|
getValue() {
|
||
|
MYVAL=$(get_setting display.${1})
|
||
|
if [ -n "${MYVAL}" ]
|
||
|
then
|
||
|
if [ "${MYVAL}" > "${MAX}" ]
|
||
|
then
|
||
|
MYVAL=${MAX}
|
||
|
elif [ "${MYVAL}" < "${MIN}" ]
|
||
|
then
|
||
|
MYVAL=${MIN}
|
||
|
fi
|
||
|
echo ${MYVAL}
|
||
|
else
|
||
|
echo $(drm_tool list 2>/dev/null | sed -n '/Connector: '${CONNECTOR}'/,$p' | awk '/'${1}'/ {print $5}')
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
setValue() {
|
||
|
log "Set (${1}: ${2})"
|
||
|
drm_tool set /dev/dri/card0 ${CONNECTOR} ${1} ${2} 2>/dev/null
|
||
|
if [ $? = 0 ]
|
||
|
then
|
||
|
set_setting display.${1} ${2}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
stepUp() {
|
||
|
LASTVAL=$(getValue ${PROPERTY})
|
||
|
NEWVAL=$(expr ${LASTVAL} + 1)
|
||
|
log "Step up (${PROPERTY}: ${NEWVAL})"
|
||
|
setValue ${PROPERTY} ${NEWVAL}
|
||
|
}
|
||
|
|
||
|
stepDown() {
|
||
|
LASTVAL=$(getValue ${PROPERTY})
|
||
|
NEWVAL=$(expr ${LASTVAL} - 1)
|
||
|
log "Step down (${PROPERTY}: ${NEWVAL})"
|
||
|
setValue ${PROPERTY} ${NEWVAL}
|
||
|
}
|
||
|
|
||
|
restoreSettings() {
|
||
|
for PROPERTY in brightness contrast saturation hue
|
||
|
do
|
||
|
RESTVAL=$(getValue ${PROPERTY})
|
||
|
setValue ${PROPERTY} ${RESTVAL}
|
||
|
done
|
||
|
}
|
||
|
|
||
|
CONNECTOR=$(drm_tool list | grep -B1 "mode.*:" | awk '/Connector/ {print $2}')
|
||
|
|
||
|
case ${NEWVAL} in
|
||
|
"up")
|
||
|
stepUp
|
||
|
;;
|
||
|
"down")
|
||
|
stepDown
|
||
|
;;
|
||
|
"restore")
|
||
|
restoreSettings
|
||
|
;;
|
||
|
*)
|
||
|
if [[ "${NEWVAL}" =~ ^[0-9] ]] && \
|
||
|
[ "${NEWVAL}" -le "${MAX}" ] && \
|
||
|
[ "${NEWVAL}" -ge "${MIN}" ]
|
||
|
then
|
||
|
setValue ${PROPERTY} ${NEWVAL}
|
||
|
else
|
||
|
echo "Error: Invalid value."
|
||
|
exit 1
|
||
|
fi
|
||
|
;;
|
||
|
esac
|