summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbin/darkmode71
1 files changed, 55 insertions, 16 deletions
diff --git a/bin/darkmode b/bin/darkmode
index 55dc32f..31dda5c 100755
--- a/bin/darkmode
+++ b/bin/darkmode
@@ -5,28 +5,67 @@ set -e
 
 icon=$(iconez -n weather-sunset)
 
-# case "${1}" in
-# dawn | dusk)
-# 	touch "/tmp/darkmode.${1}"
-# 	;;
-# day* | night)
-# 	rm /tmp/darkmode* || true
-# 	;;
-# esac
+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__apply_theme() {
+	# stolen from https://github.com/lemnos/theme.sh/blob/master/bin/theme.sh
+	awk '
+	BEGIN {
+		fgesc="\033]10;#%s\007"
+		bgesc="\033]11;#%s\007"
+		curesc="\033]12;#%s\007"
+		colesc="\033]4;%d;#%s\007"
+	}
+	/^foreground:/ { printf fgesc, substr($2, 2) > "/dev/tty" }
+	/^background:/ { printf bgesc, substr($2, 2) > "/dev/tty" }
+	/^cursor:/ { printf curesc, substr($2, 2) > "/dev/tty" }
+	/^[0-9]+:/ { printf colesc, $1, substr($2, 2) > "/dev/tty" }
+'
+}
+term__dark() {
+	term__apply_theme <"$XDG_CONFIG_HOME"/darkmode/night
+}
+term__light() {
+	term__apply_theme <"$XDG_CONFIG_HOME"/darkmode/day
+}
+
+# debounce dawn/dusk phasing
+marker="/tmp/darkmode_transition"
+case "${1}" in
+dawn | dusk)
+	[ ! -f $marker ] && touch "$marker"
+	;;
+day* | night)
+	[ -f $marker ] && rm -f "$marker"
+	;;
+esac
+
+# showtime...
 case "${1}" in
 dawn | day*)
-	# [ -f "/tmp/darkmode.${1}" ] && exit 0
-	notify-send -i "${icon}" -a wlsunset "wlsunset" "switching to day <i>${1}</i>"
-	gsettings set org.gnome.desktop.interface gtk-theme Adwaita
-	pkill -fe -USR1 waybar-gammastep
+	[ -f $marker ] && exit 0
+	notify-send -i "${icon}" -a darkmode "darkmode" "switching to <i>${1}</i>"
+	gui__light
+	# term__light
+	# pkill -fe -USR1 waybar-gammastep
 	;;
 
 dusk | night)
-	# [ -f "/tmp/darkmode.${1}" ] && exit 0
-	notify-send -i "${icon}" -a wlsunset "wlsunset" "switching to <i>${1}</i>"
-	gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark
-	pkill -fe -USR2 waybar-gammastep
+	[ -f $marker ] && exit 0
+	notify-send -i "${icon}" -a darkmode "darkmode" "switching to <i>${1}</i>"
+	gui__dark
+	# term__dark
+	# pkill -fe -USR2 waybar-gammastep
 	;;
 
 *)