Update
This commit is contained in:
122
local/share/sway/scripts/theme-toggle.sh
Executable file
122
local/share/sway/scripts/theme-toggle.sh
Executable file
@@ -0,0 +1,122 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
|
||||
LOCKFILE="$HOME/.local/auto-theme-toggle"
|
||||
DARK_SWAY_THEME="$HOME/.config/sway/definitions.d/theme.dark.conf_"
|
||||
LIGHT_SWAY_THEME="$HOME/.config/sway/definitions.d/theme.light.conf_"
|
||||
|
||||
CURRENT_PRIMARY_THEME="dark"
|
||||
CURRENT_SECONDARY_THEME="light"
|
||||
NEXT_PRIMARY_THEME="dark"
|
||||
NEXT_SECONDARY_THEME="light"
|
||||
|
||||
if [ -f "$DARK_SWAY_THEME" ]; then
|
||||
CURRENT_PRIMARY_THEME="light"
|
||||
CURRENT_SECONDARY_THEME="dark"
|
||||
NEXT_PRIMARY_THEME="light"
|
||||
NEXT_SECONDARY_THEME="dark"
|
||||
fi
|
||||
|
||||
current_unix=$(date +%s)
|
||||
__geo_content=$(sh /usr/share/sway/scripts/geoip.sh)
|
||||
|
||||
sunrise_unix() {
|
||||
sunrise_string=$(echo "$__geo_content" | jq -r '.sunrise // empty')
|
||||
sunrise_unix=$(date -d "$sunrise_string" +%s)
|
||||
echo "$sunrise_unix"
|
||||
}
|
||||
|
||||
sunset_unix() {
|
||||
sunset_string=$(echo "$__geo_content" | jq -r '.sunset // empty')
|
||||
sunset_unix=$(date -d "$sunset_string" +%s)
|
||||
echo "$sunset_unix"
|
||||
}
|
||||
|
||||
tomorrow_sunrise_unix() {
|
||||
sunrise_string=$(echo "$__geo_content" | jq -r '.sunrise_tomorrow // empty')
|
||||
sunrise_unix=$(date -d "$sunrise_string" +%s)
|
||||
echo "$sunrise_unix"
|
||||
}
|
||||
|
||||
tomorrow_sunset_unix() {
|
||||
sunset_string=$(echo "$__geo_content" | jq -r '.sunset_tomorrow // empty')
|
||||
sunset_unix=$(date -d "$sunset_string" +%s)
|
||||
echo "$sunset_unix"
|
||||
}
|
||||
|
||||
if [ -f "$LOCKFILE" ]; then
|
||||
if [ $current_unix -ge $(sunrise_unix) ] && [ $current_unix -lt $(sunset_unix) ]; then
|
||||
NEXT_PRIMARY_THEME="light"
|
||||
NEXT_SECONDARY_THEME="dark"
|
||||
else
|
||||
NEXT_PRIMARY_THEME="dark"
|
||||
NEXT_SECONDARY_THEME="light"
|
||||
fi
|
||||
fi
|
||||
|
||||
ensure_theme() {
|
||||
if [ "$CURRENT_PRIMARY_THEME" != "$1" ]; then
|
||||
PRIMARY_SWAY_THEME="$HOME/.config/sway/definitions.d/theme.conf"
|
||||
PRIMARY_FOOT_THEME="$HOME/.config/foot/foot-theme.ini"
|
||||
/usr/bin/mv --backup -v $PRIMARY_SWAY_THEME "$HOME/.config/sway/definitions.d/theme.$2.conf_"
|
||||
/usr/bin/mv --backup -v $PRIMARY_FOOT_THEME "$HOME/.config/foot/foot-theme.$2.ini_"
|
||||
/usr/bin/mv --backup -v "$HOME/.config/sway/definitions.d/theme.$1.conf_" $PRIMARY_SWAY_THEME
|
||||
/usr/bin/mv --backup -v "$HOME/.config/foot/foot-theme.$1.ini_" $PRIMARY_FOOT_THEME
|
||||
|
||||
swaymsg reload
|
||||
fi
|
||||
}
|
||||
|
||||
#Accepts managing parameter
|
||||
case $1'' in
|
||||
'toggle')
|
||||
if [ -f "$LOCKFILE" ]; then
|
||||
NEXT_PRIMARY_THEME="$CURRENT_PRIMARY_THEME"
|
||||
NEXT_SECONDARY_THEME="$CURRENT_SECONDARY_THEME"
|
||||
else
|
||||
NEXT_PRIMARY_THEME="$CURRENT_SECONDARY_THEME"
|
||||
NEXT_SECONDARY_THEME="$CURRENT_PRIMARY_THEME"
|
||||
fi
|
||||
|
||||
ensure_theme $NEXT_PRIMARY_THEME $NEXT_SECONDARY_THEME
|
||||
exit 0
|
||||
;;
|
||||
'auto-toggle')
|
||||
if [ -f "$LOCKFILE" ]; then
|
||||
rm "$LOCKFILE"
|
||||
else
|
||||
touch "$LOCKFILE"
|
||||
fi
|
||||
|
||||
waybar-signal theme
|
||||
exit 0
|
||||
;;
|
||||
'check')
|
||||
[ -f "$DARK_SWAY_THEME" ] || [ -f "$LIGHT_SWAY_THEME" ]
|
||||
exit $?
|
||||
;;
|
||||
'status')
|
||||
#Returns a string for Waybar
|
||||
text="switch to ${CURRENT_SECONDARY_THEME} theme\r(Right click to switch automatically)"
|
||||
alt=$CURRENT_PRIMARY_THEME
|
||||
if [ -f "$LOCKFILE" ]; then
|
||||
next_switch_unix=$(sunrise_unix)
|
||||
if [ $current_unix -ge $next_switch_unix ]; then
|
||||
next_switch_unix=$(sunset_unix)
|
||||
fi
|
||||
if [ $current_unix -ge $next_switch_unix ]; then
|
||||
next_switch_unix=$(tomorrow_sunrise_unix)
|
||||
fi
|
||||
hours=$((($next_switch_unix - $current_unix) / (60 * 60)))
|
||||
minutes=$((($next_switch_unix - $current_unix) / 60 % 60))
|
||||
text="switching to ${CURRENT_SECONDARY_THEME} theme in ${hours}h ${minutes}m\r(Right click to disable)"
|
||||
alt="auto_${CURRENT_PRIMARY_THEME}"
|
||||
|
||||
ensure_theme $NEXT_PRIMARY_THEME $NEXT_SECONDARY_THEME
|
||||
fi
|
||||
|
||||
printf '{"alt":"%s","tooltip":"%s"}\n' "$alt" "$text"
|
||||
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user