Linux-Tech-Tips/Scripts/brightness-changer.sh

61 lines
1.8 KiB
Bash

#!/bin/usr/env bash
# Simple script to slowly lower your displays brightness after sunset using ddcutil
# Assuming brightness is 75 and lower is to 50
# Get the current brightness
ddcutil getvcp 10 | awk '{print $9}' | sed 's/,//g' > /tmp/brightness
current_brightness=$(cat /tmp/brightness)
# Function to slowly lower the brightness
lower_brightness() {
while (( $current_brightness > 50 )); do
current_brightness=$(($current_brightness - 1))
ddcutil setvcp 10 $current_brightness
sleep 1
done
}
# Function to reset brightness
reset_brightness() {
if (( $current_brightness < 75 )); then
ddcutil setvcp 10 75
fi
}
# Get your coordinates here: https://www.latlong.net/
lat= 12.345678
long=98.765432
# Get the times for sunrise and sunset
curl "https://api.sunrisesunset.io/json?lat=$lat&lng=$long" |jq -r '.results | .sunrise' > /tmp/sunrise
curl "https://api.sunrisesunset.io/json?lat=$lat&lng=$long" |jq -r '.results | .sunset' > /tmp/sunset
sunrise=$(cat /tmp/sunrise)
sunset=$(cat /tmp/sunset)
# Convert them into hours and minutes
hour_sunrise=$(date -d "$sunrise" +"%H")
min_sunrise=$(date -d "$sunrise" +"%M")
hour_sunset=$(date -d "$sunset" +"%H")
min_sunset=$(date -d "$sunset" +"%M")
# Get the current hour and minute
current_hour=$(date +%H)
current_minute=$(date +%M)
# Convert current time to minutes since midnight
current_time=$((10#$current_hour * 60 + 10#$current_minute))
# Define the start times in minutes since midnight
start_command1=$((10#$hour_sunset * 60 + 10#$min_sunset))
end_command1=$((10#$hour_sunrise * 60 + 10#$min_sunrise))
if (( current_time >= start_command1 || current_time < end_command1 )); then
# Execute command1 if the time is between sunset and sunrise
lower_brightness
else
# Execute command2 if the time is between sunrise and sunset
reset_brightness
fi