#!/bin/bash
# www.xeron.cc
# Version 4! Major rewrites to the entire script.
#
# Please make sure the theme name you have in your RC file is the same as one
# of the ones in your $THEME_PATH. Otherwise the script has no way of finding
# the correct line to change in your rc.xml. It searchs for $theme
# so if you have more then one line in your rc.xml that matches that for some
# reason then you may have problems. BACK UP YOUR RC.XML BEFORE TRYING THIS. If
# you misconfigure something, it COULD screw up your rc.xml, though I doubt it
# will. I've tried putting as much fail safe into this as possible, and it
# works quite well if you've configured everything properly.
THEME_PATH="/usr/share/themes/:$HOME/.local/share/themes/"
RC_PATH="$HOME/.config/openbox/rc.xml"
SCRIPT_PATH="$HOME/misc/scripts/theme"
BINNAME="openbox"
#========== END USER VARIABLES =============
IFS=:
THEMES=`find $THEME_PATH -name openbox-3 -printf '%h\n'|while read x;do basename "$x";done|sort -f`
IFS=$'\n'
rcfind() {
for RC in $THEMES; do
grep -q "$RC" "$RC_PATH" && break
unset RC
done
}
case "$1" in
menu)
rcfind
echo ""
for ITEM in $THEMES; do
if [ "$ITEM" = "$RC" ]; then
LABEL="<-$ITEM"
else
LABEL="$ITEM"
fi
echo " - "
echo " $SCRIPT_PATH apply \"$ITEM\""
echo "
"
done
echo ""
;;
apply)
if [ -z "$2" ]; then
echo "ERROR: No theme name specified."
exit 1
fi
rcfind
if [ -z "$RC" ]; then
echo "Couldn't find theme in RC file. Check theme path. If necessary, manually change theme to one in your theme path"
exit 1
fi
for THEME in $THEMES; do
if [ "$2" = "$THEME" ]; then
sed -i s:"$RC":"$THEME": "$RC_PATH" 2> /dev/null
foundtheme=1
break
fi
done
if [ -z $foundtheme ]; then
echo "Theme not found. Check your theme path and try again"
exit 1
fi
killall -USR2 "$BINNAME"
;;
*)
echo "Usage: {menu|apply [theme]}"
echo "Theme list:" $THEMES
;;
esac