From 18b894fe34a14c3dcb1f5181d3c4564a37ee1f95 Mon Sep 17 00:00:00 2001 From: bimlas Date: Thu, 9 Apr 2020 10:49:50 +0200 Subject: [PATCH] Initial commit --- xfce-night-mode.sh | 108 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100755 xfce-night-mode.sh diff --git a/xfce-night-mode.sh b/xfce-night-mode.sh new file mode 100755 index 0000000..decf67f --- /dev/null +++ b/xfce-night-mode.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +function show_usage() +{ + progname=`basename "$0"` + echo "$progname [night|day|toggle] (defaults to 'toggle')" + echo "$progname SUNRISE SUNSET (e.g. '8:00 18:00')" +} + +function parse_args() +{ + case $# in + 0) + echo 'toggle' + ;; + 1) + echo "$1" + ;; + 2) + _get_mode_by_time "$1" "$2" + ;; + *) + exit 1 + esac +} + +function _get_mode_by_time() +{ + now=`date +"%H%M"` + sunrise="${1/:/}" + sunset="${2/:/}" + + if [ $now -ge $sunrise -a $now -le $sunset ]; then + echo 'day' + else + echo 'night' + fi +} + +function set_night_mode() +{ + current_theme=`xfconf-query -c $2 -p $3` + if ( _is_mode_already_set "$current_theme" "$1" ); then + exit 0 + fi + + new_theme=`_set_$1 "$current_theme" 2> /dev/null` + if [ $? != 0 ]; then + show_usage + exit 1 + fi + + xfconf-query -c $2 -p $3 -s "$new_theme" +} + +function _is_mode_already_set() +{ + if ( _is_dark "$1" ) && [ "$2" = "night" ]; then + exit 0 + fi + if ! ( _is_dark "$1" ) && [ "$2" = "day" ]; then + exit 0 + fi + exit 1 +} + +function _set_toggle() +{ + if ( _is_dark "$1" ); then + _set_day "$1" + else + _set_night "$1" + fi +} + +function _is_dark() +{ + echo "$1" | grep '\-dark$' > /dev/null +} + +function _set_day() +{ + echo "${1%-dark}" +} + +function _set_night() +{ + if ( _is_dark "$1" ); then + echo "$1" + else + echo "$1-dark" + fi +} + +mode=`parse_args $@` +if [ $? != 0 ]; then + show_usage + exit 1 +fi + +# GTK theme +set_night_mode $mode xsettings /Net/ThemeName + +# Icon theme +set_night_mode $mode xsettings /Net/IconThemeName + +# Window manager theme +# set_night_mode $mode xfwm4 /general/theme