#!/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