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