Merge pull request #4 from Theluga/branch-to-pull-request-main-fork
Adding new script and service example
This commit is contained in:
		
						commit
						cd10ecf94e
					
				
					 3 changed files with 178 additions and 1 deletions
				
			
		
							
								
								
									
										8
									
								
								AutomaticBrightness.service
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								AutomaticBrightness.service
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | [Unit] | ||||||
|  | Description=Mac like automatic brightness service | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | ExecStart=/path/to/AutomaticBrightness.sh | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=default.target | ||||||
|  | @ -17,7 +17,7 @@ Your sensor has a diffrent range thant the 12th Gen Intel Framework laptop senso | ||||||
|            Type     |  Sensor Rnge | STDScale |            Type     |  Sensor Rnge | STDScale | ||||||
|      11th Gen Intel | 0 - 3207633  | 1 |      11th Gen Intel | 0 - 3207633  | 1 | ||||||
|      12th Gen Intel | 0 - 3984     | 24 |      12th Gen Intel | 0 - 3984     | 24 | ||||||
|      Dell Insp 7359 | 0 - 15000    | ?  |      Dell Insp 7359 | 0 - 15000    | 20  | ||||||
| 
 | 
 | ||||||
| ## Controls | ## Controls | ||||||
| ```./AutomaticBrightness.sh | Defualt running mode of script``` | ```./AutomaticBrightness.sh | Defualt running mode of script``` | ||||||
|  |  | ||||||
							
								
								
									
										169
									
								
								autobrightness.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								autobrightness.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,169 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | # Slight Alteration of AutomaticBrighness.sh (could be a dell specific fork) | ||||||
|  | 
 | ||||||
|  | #variables to run | ||||||
|  | 
 | ||||||
|  | #decrease cpu usage | ||||||
|  | Priority=19 # CPU limit, adjust as needed | ||||||
|  | 
 | ||||||
|  | # How much light change must be seen by the sensor before it will act | ||||||
|  | LightChange=10 | ||||||
|  | 
 | ||||||
|  | # How often it checks the sensor | ||||||
|  | SensorDelay=1 | ||||||
|  | 
 | ||||||
|  | # Scale sensor to display brightness range | ||||||
|  | SensorToDisplayScale=20 | ||||||
|  | 
 | ||||||
|  | # This should match your refresh rate otherwise it will either change the backlight more times than needed or too few for a smooth animation | ||||||
|  | LevelSteps=60 | ||||||
|  | 
 | ||||||
|  | # The is should match the LevelSteps but in the actual time each event should take to see | ||||||
|  | AnimationDelay=0.016 | ||||||
|  | 
 | ||||||
|  | # Read the variable names | ||||||
|  | MaxScreenBrightness=937 | ||||||
|  | MinimumBrightness=1 | ||||||
|  | 
 | ||||||
|  | #minimum illuminance to get minimum brightness | ||||||
|  | 
 | ||||||
|  | MinimimumIlluminance=0 | ||||||
|  | 
 | ||||||
|  | # 2 : Default | 1 : Add Offset | 0 : Subtract Offset, Recommended not to change | ||||||
|  | op=2 | ||||||
|  | 
 | ||||||
|  | #place where you get the brightness of the monitor being controled and the sensor of brightness | ||||||
|  | MonitorBrightness=/sys/class/backlight/intel_backlight/brightness | ||||||
|  | 
 | ||||||
|  | #my sensor keep changing places, this way it will always be found with * if you have lots of sensors | ||||||
|  | 
 | ||||||
|  | AnbientSensorIlluminance=`echo "$(set -- $(realpath /sys/bus/iio/devices/iio:*/in_illuminance_raw); echo "$1")"` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | while getopts i:d: flag; do | ||||||
|  |   case "${flag}" in | ||||||
|  |     i) op=1 | ||||||
|  |        num=${OPTARG};; | ||||||
|  |     d) op=0  | ||||||
|  |        num=${OPTARG};; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | if [[ -f /tmp/AB.offset ]]; then | ||||||
|  |   OffSet=$(cat /tmp/AB.offset) | ||||||
|  | else | ||||||
|  |   OffSet=0 | ||||||
|  |   echo $OffSet > /tmp/AB.offset | ||||||
|  |   chmod 666 /tmp/AB.offset | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | OffSet=$((OffSet < 0 ? 0 : OffSet)) | ||||||
|  | 
 | ||||||
|  | if [[ $op -lt 2 ]]; then | ||||||
|  |   if [[ $op -eq 1 ]]; then | ||||||
|  |     OffSet=$((OffSet + num)) | ||||||
|  |   else  | ||||||
|  |     OffSet=$((OffSet - num)) | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   OffSet=$((OffSet < 0 ? 0 : OffSet)) | ||||||
|  |   echo $OffSet > /tmp/AB.offset | ||||||
|  |   chmod 666 /tmp/AB.offset | ||||||
|  |   exit | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Set the priority of the current script and says it is running | ||||||
|  | renice "$Priority" "$$" | ||||||
|  | touch '/tmp/AB.running' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | OldLight=$(cat $AnbientSensorIlluminance) | ||||||
|  | 
 | ||||||
|  | until [ -f /tmp/AB.kill ]; do | ||||||
|  |   if [[ -f /tmp/AB.stop ]]; then | ||||||
|  |     rm '/tmp/AB.stop' | ||||||
|  |     rm '/tmp/AB.running' | ||||||
|  | 
 | ||||||
|  |     until [[ -f /tmp/AB.start ]]; do | ||||||
|  |       sleep 10 | ||||||
|  |     done | ||||||
|  | 
 | ||||||
|  |     rm '/tmp/AB.start' | ||||||
|  |     touch '/tmp/AB.running' | ||||||
|  |   else | ||||||
|  |     if [[ -f /tmp/AB.offset ]]; then | ||||||
|  |       OffSet=$(cat /tmp/AB.offset) | ||||||
|  |     else | ||||||
|  |       OffSet=0 | ||||||
|  |       echo $OffSet > /tmp/AB.offset | ||||||
|  |       chmod 666 /tmp/AB.offset | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     Light=$(cat $AnbientSensorIlluminance) | ||||||
|  |     RealLight=$(cat $AnbientSensorIlluminance) | ||||||
|  |     Light=$((Light + OffSet)) | ||||||
|  |     RealLight=$((RealLight + OffSet)) | ||||||
|  | 
 | ||||||
|  |     if [[ $Light -lt $LightChange ]]; then | ||||||
|  |       MaxOld=$((OldLight + LightChange)) | ||||||
|  |       MinOld=$((OldLight - LightChange)) | ||||||
|  |     else | ||||||
|  |       MaxOld=$((OldLight + OldLight/LightChange)) | ||||||
|  |       MinOld=$((OldLight - OldLight/LightChange)) | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     if [[ $Light -gt $MaxOld ]] || [[ $Light -lt $MinOld ]]; then | ||||||
|  |       CurrentBrightness=$(cat $MonitorBrightness) | ||||||
|  |       Light=$(( $Light + $MinimumBrightness )) | ||||||
|  |       TempLight=$(($Light * $SensorToDisplayScale)) | ||||||
|  | 
 | ||||||
|  |       if [[ $TempLight -gt $MaxScreenBrightness ]]; then | ||||||
|  |         NewLight=$MaxScreenBrightness | ||||||
|  |         LimitMaxIlluminanceReached=1 | ||||||
|  |       elif [[ $RealLight -le $MinimimumIlluminance ]]; then | ||||||
|  |         NewLight=$MinimumBrightness | ||||||
|  |         LimitMinIlluminanceReached=1 | ||||||
|  |       else | ||||||
|  |         NewLight=$TempLight | ||||||
|  |       fi | ||||||
|  | 
 | ||||||
|  |       DiffCount=$(( ($NewLight - $CurrentBrightness)/$LevelSteps )) | ||||||
|  |        | ||||||
|  |       for i in $(eval echo {1..$LevelSteps}); do | ||||||
|  |         NewLight=$(( $DiffCount )) | ||||||
|  | 
 | ||||||
|  |         if [[ $NewLight -lt 0 ]]; then | ||||||
|  |           NewLight=$( echo "$NewLight" | awk -F "-" {'print$2'}) | ||||||
|  |           NewLight=$(echo $NewLight-) | ||||||
|  |         else | ||||||
|  |           NewLight=$(echo +$NewLight) | ||||||
|  |         fi | ||||||
|  |          | ||||||
|  |         if [[ $i -eq $LevelSteps ]]; then | ||||||
|  |           brightnessctl -q s $NewLight | ||||||
|  |            | ||||||
|  |           if [[ $LimitMaxIlluminanceReached -eq 1 ]]; then | ||||||
|  |             NewLight=$MaxScreenBrightness | ||||||
|  |             LimitMaxIlluminanceReached=0 | ||||||
|  |           fi | ||||||
|  |            | ||||||
|  |           if [[ $LimitMinIlluminanceReached -eq 1 ]]; then | ||||||
|  |             NewLight=$MinimumBrightness | ||||||
|  |             LimitMinIlluminanceReached=0 | ||||||
|  |           fi | ||||||
|  |         fi | ||||||
|  |            | ||||||
|  |         brightnessctl -q s $NewLight | ||||||
|  |         sleep $AnimationDelay | ||||||
|  |       done | ||||||
|  | 
 | ||||||
|  |       OldLight=$Light | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     sleep $SensorDelay | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | rm '/tmp/AB.running' | ||||||
|  | rm '/tmp/AB.kill' | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue