#!/bin/sh
# Bruce Barnett 
# This script will change the specified resource
#
# Usage: Resource [-p] [resource[:] value]
# where RESOURCE  is set to VALUE
# if -p is given, change the value permanently.
# if -p is given, but no resource specified, save all
#

# specify default filename
XD="$HOME/.Xdefaults"

# Is there a -p?
if [ $# -gt 0 ] ;
then
        case "$1" in
                -p) PERM=1;shift;;
        esac
fi

# must have 0 or 2 arguments now, else error

if [ $# -eq 1 -o $# -gt 2 ] ; then
        echo "Usage: `basename $0 ` [-p] [resource[:] value]"
        exit 1;
fi



if [ $# -eq 2 ] ; then

        # the colon is optional - this removes it
        RESOURCE=`echo $1 | tr -d :`
        VALUE=$2;
        # Make the change
#       echo "echo $RESOURCE $VALUE | xrdb -merge"
        echo $RESOURCE: $VALUE | xrdb -merge
fi

# Is this a permanent change?
if [ $PERM ] ; then
#       echo "xrdb -edit $XD -backup .b"
        xrdb -edit $XD -backup .b

        # Note that the backup fill will be created even if
        # the value does not change.
        # therefore - compare the original backup file with the new file
        # if no difference, delete the backup file
        # else rename the backup file to .Xdefaults.old.1
        # and rename .Xdefaults.old.1 to .Xdefaults.old.2

        diff $XD $XD.b >/dev/null && {
                # if identical, delete .Xdefaults.b
                /bin/rm $XD.b
        }  || {
                # different files - keep 2 backups
                #  you can easily make it keep 3, 4 or 5 backups.
                # .Xdefaults.old.1 may not exist
                # if it does, then rename it
                [ -f $XD.old.1 ] && /bin/mv $XD.old.1 $XD.old.2
                /bin/mv $XD.b $XD.old.1
        }
fi
AskApache Web Development