#!/bin/sh
set -e
[ -n "$DEBUG" ] && set -x
lockfile="/tmp/darkmode_lock"
[ -e "$lockfile" ] && exit 1
touch "$lockfile"
trap '{ rm $lockfile; }' EXIT
transition_marker="/tmp/darkmode_transition"
force_marker="/tmp/darkmode_force"
icon=$(iconez -n weather-sunset)
trap '{ notify-send -c error -i "$icon" -a darkmode "darkmode" "switching failed!"; }' ERR
gui__dark() {
gsettings set org.gnome.desktop.interface gtk-theme Adwaita
# gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
}
gui__light() {
gsettings set org.gnome.desktop.interface gtk-theme Adwaita
gsettings set org.gnome.desktop.interface color-scheme prefer-light
}
term__dark() {
term-apply-colors <"$XDG_CONFIG_HOME"/darkmode/night
}
term__light() {
term-apply-colors <"$XDG_CONFIG_HOME"/darkmode/day
}
while getopts fh opt; do
case "$opt" in
f) touch "$force_marker" ;;
h | ?) exit 1;;
esac
done
shift $((OPTIND - 1))
# if there's a force marker and it's not older than 24h -> exit
[ -f $force_marker ] && [ "$(stat -c '%Y' "$force_marker")" -gt "$(date --date=yesterday '+%s')" ] && exit 0
# debounce dawn/dusk phasing
case "${1}" in
dawn | dusk)
[ ! -f $transition_marker ] && touch "$transition_marker"
;;
day* | night)
[ -f $transition_marker ] && rm -f "$transition_marker"
;;
esac
# showtime...
case "${1}" in
dawn | day*)
[ -f $transition_marker ] && exit 0
notify-send -i "${icon}" -a darkmode "darkmode" "switching to ${1}"
gui__light
# term__light
# pkill -fe -USR1 waybar-gammastep
;;
dusk | night)
[ -f $transition_marker ] && exit 0
notify-send -i "${icon}" -a darkmode "darkmode" "switching to ${1}"
gui__dark
# term__dark
# pkill -fe -USR2 waybar-gammastep
;;
*)
printf "usage: %s [night|daytime]\n" "$(basename "$(readlink -f -- "$0")")"
;;
esac