mirror of
https://github.com/SinTan1729/random.git
synced 2024-12-27 05:28:37 -06:00
Improved logic for sun status
This commit is contained in:
parent
e909ec779a
commit
3645aec07c
1 changed files with 23 additions and 18 deletions
|
@ -16,7 +16,7 @@
|
||||||
# just run this script one manually to set it up to run perpetually (hopefully) using 'at'
|
# just run this script one manually to set it up to run perpetually (hopefully) using 'at'
|
||||||
# (some distros don't come with 'at' preinstalled, so you might need to install 'at' and enable the 'atd' service.)
|
# (some distros don't come with 'at' preinstalled, so you might need to install 'at' and enable the 'atd' service.)
|
||||||
|
|
||||||
# it might also be a good idea to add '<location-of-this-script> scheduler wait' to your DE's autostart list, or to '.profile' so that it launches on system login
|
# it might also be a good idea to add '<location-of-this-script> scheduler' to your DE's autostart list, or to '.profile' so that it launches on system login
|
||||||
# (sometimes I forget to turn on the monitor when I start my PC, so this is better than having a crontab)
|
# (sometimes I forget to turn on the monitor when I start my PC, so this is better than having a crontab)
|
||||||
|
|
||||||
# location of the config file
|
# location of the config file
|
||||||
|
@ -30,33 +30,38 @@ else
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# sometimes we need to wait a minute so that the next schedule is set up properly (or sunwait reports day/night in a misleading way)
|
|
||||||
[ "$2" == "wait" ] && echo "Waiting 60 seconds..." && sleep 60
|
|
||||||
|
|
||||||
# get sun status
|
# get sun status
|
||||||
sun_status=$(sunwait poll $latitude $longitude)
|
sun_status=$(sunwait poll $latitude $longitude)
|
||||||
[ $sun_status == "DAY" ] && target=$high || target=$low
|
|
||||||
|
|
||||||
# do the brightness adjustment using ddcutil
|
|
||||||
ddcutil setvcp 10 $target
|
|
||||||
echo "Monitor brightness set to $target%, since it's $(echo $sun_status | tr '[:upper:]' '[:lower:]') time"
|
|
||||||
|
|
||||||
# check if we want to access the scheduler. If yes, create a schedule using `at`
|
# check if we want to access the scheduler. If yes, create a schedule using `at`
|
||||||
if [ "$1" == "scheduler" ]; then
|
if [ "$1" == "scheduler" ]; then
|
||||||
if [ $sun_status == "DAY" ]; then
|
# get the timings for twilight events and current time
|
||||||
time_next=$(sunwait report 35.221050N 97.445938W | grep "Daylight:" | awk '{print $6}')
|
sunrise_time=$(sunwait report 35.221050N 97.445938W | grep "Daylight:" | awk '{print $4}')
|
||||||
else
|
sunset_time=$(sunwait report 35.221050N 97.445938W | grep "Daylight:" | awk '{print $6}')
|
||||||
time_next=$(sunwait report 35.221050N 97.445938W | grep "Daylight:" | awk '{print $4}')
|
now_time=$(date "+%H:%M")
|
||||||
fi
|
|
||||||
|
# try to figure out if it's twilight right now, then need to adjust sun_status
|
||||||
|
[ $sunrise_time == $now_time ] && sun_status="DAY"
|
||||||
|
[ $sunset_time == $now_time ] && sun_status="NIGHT"
|
||||||
|
|
||||||
|
# figure out the time of the next twilight
|
||||||
|
[ $sun_status == "DAY" ] && time_next=$sunset_time || time_next=$sunrise_time
|
||||||
|
|
||||||
|
# query all `at` tasks
|
||||||
task_list=$(atq | grep $time_next | awk '{print $1}')
|
task_list=$(atq | grep $time_next | awk '{print $1}')
|
||||||
|
|
||||||
# loop through all `at` entries to see if a task already exists
|
# loop through all `at` entries to see if a task already exists
|
||||||
flag=true
|
flag=true
|
||||||
for item in $task_list
|
for item in $task_list
|
||||||
do
|
do
|
||||||
[ "$(at -c $item | sed 'x;$!d')" == "$scriptdir/brightness-by-daylight.sh scheduler wait" ] && flag=false
|
[ "$(at -c $item | sed 'x;$!d')" == "$scriptdir/brightness-by-daylight.sh scheduler" ] && flag=false
|
||||||
done
|
done
|
||||||
|
|
||||||
# actually create the schedule
|
# create the schedule
|
||||||
$flag && at -m $time_next <<< "$scriptdir/brightness-by-daylight.sh scheduler wait"
|
$flag && at -m $time_next <<< "$scriptdir/brightness-by-daylight.sh scheduler"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# do the brightness adjustment using ddcutil
|
||||||
|
[ $sun_status == "DAY" ] && target=$high || target=$low
|
||||||
|
ddcutil setvcp 10 $target
|
||||||
|
echo "Monitor brightness set to $target%, since it's $(echo $sun_status | tr '[:upper:]' '[:lower:]') time"
|
Loading…
Reference in a new issue