3 # Copyright (c) 2000 LordZork Industries (lordzork@lordzork.com)
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the "Software"),
7 # to deal in the Software without restriction, including without limitation
8 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 # and/or sell copies of the Software, and to permit persons to whom the
10 # Software is furnished to do so, subject to the following conditions:
12 # The above copyright notice and this permission notice shall be included in
13 # all copies or substantial portions of the Software.
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 # DEALINGS IN THE SOFTWARE.
26 case $INFO in yes|y
|1) info_msg
; esac
30 echo; echo "$NAME: configuration error: $OPTION=\"$VALUE\""
31 echo "$NAME: please edit $CONFIG and provide the correct variable."
34 echo; echo "$NAME: error: couldn't execute '$APP'! tried to run fallback option $ARGUMENT"
35 echo "$NAME: but quit because of the following error in $CONFIG:"
36 echo "$NAME: $OPTION= $VALUE"
37 echo "$NAME: please edit $CONFIG and provide the correct variable!"
40 echo; echo "$NAME: error: couldn't find any suitable image applications in the system path!"
45 echo; echo "$NAME: error: invalid option, or non-existent image ($ARGUMENT)."
48 echo; echo "$NAME: error: the image you specified ($IMAGE) could not be found."
51 echo; echo "$NAME: error: please specify a valid image."
54 echo; echo "$NAME: error: bsetroot couldn't be found! check your openbox installation."
57 echo; echo "$NAME: error: wrong number of arguments!"
58 echo "$NAME: make sure you enclosed the options for '$APP' in double quotes."
61 echo; echo "$NAME: error: tried to run '$VALUE' for $ARGUMENT argument,"
62 echo "$NAME: but couldnt find '$APP' in the path! please fix the following"
63 echo "$NAME: line in $CONFIG to point to an existing application:"
64 echo "$NAME: $OPTION=\"$VALUE\""
67 echo "$NAME: error: couldn't find grep!"
68 echo "this script needs grep to be in your path in order to function."
69 echo "you can get GNU grep from ftp://ftp.gnu.org/bin/gnu/grep/" && exit 1
72 echo "it is suggested that you use qiv, xli (xsetbg), or xv."
73 echo "you can obtain them at the following locations:"
75 echo " qiv: http://www.klografx.de/software/qiv.shtml"
76 echo " xli: http://pantransit.reptiles.org/prog/#xli"
77 echo " xv: http://www.trilon.com/xv/downloads.html"
79 echo "the above URLs are current as of 05/23/2000."
87 echo "$NAME $VERSION: $MORE"
90 echo " (none) image is set using default values"
92 echo " -full, -f image is set fullscreen"
93 echo " -tile, -t image is set tiled"
94 echo " -center, -c image is set centered"
96 echo " -app, -a <application> image is set using <application> with"
97 echo " <"'"application options"'"> quote-enclosed \"options\" and"
98 echo " -center, -c|-tile, -t|-full, -f default fallback option"
100 echo " -display <string> display to connect to (bsetroot only)"
101 echo " -mod <x> <y> sets bsetroot modula pattern"
102 echo " -foreground, -fg <color> modula foreground color"
103 echo " -background, -bg <color> modula background color"
105 echo " -gradient <texture> sets bsetroot gradient texture"
106 echo " -from <color> gradient start color"
107 echo " -to <color> gradient end color"
109 echo " -solid <color> sets bsetroot solid color"
111 echo " -version, -v outputs $NAME's version number"
112 echo " -info, -i outputs configuration info"
113 echo " -help, -h this message"
115 echo "usage: <options...> <image>"
124 SUMMARY
="error: some variables are blank"
127 SUMMARY
="no values have been specified"
133 case $APP_ERROR in [1-4])
134 SUMMARY
="error: some applications couldn't be found!"
137 case `which bsetroot 2>&1` in
139 BSETROOT
=`which bsetroot`
142 BSETROOT
="(error: not found)"
145 SUMMARY
="$SUMMARY, and bsetroot does not seem to be present."
148 SUMMARY
="$SUMMARY, but bsetroot does not seem to be present."
152 echo "$NAME $VERSION configuration:"
154 echo " bsetroot: $BSETROOT"
156 echo " reading configuration from: $CONFIG"
158 echo " configuration values:"
160 case $FULL_BGAPP_MSG in
162 echo " fullscreen (ERROR): $FULL_BGAPP_MSG"
165 echo " fullscreen (FULL): $FULL_MSG"
170 case $TILE_BGAPP_MSG in
172 echo " tiled (ERROR): $TILE_BGAPP_MSG"
175 echo " tiled (TILE): $TILE_MSG"
180 case $CENTER_BGAPP_MSG in
182 echo " centered (ERROR): $CENTER_BGAPP_MSG"
185 echo " centered (CENTER): $CENTER_MSG"
190 case $DEFAULT_BGAPP_MSG in
192 echo " default (ERROR): $DEFAULT_BGAPP_MSG"
195 echo " default (DEFAULT): $DEFAULT_MSG"
198 echo " summary: $SUMMARY"
205 case `which $1 2>&1` in
207 echo "$NAME: checking for $1... `which $1`"
208 echo "### $app" >> $TMPFILE
209 echo "# FULL=\"$full\"" >> $TMPFILE
210 echo "# TILE=\"$tile\"" >> $TMPFILE
211 echo "# CENTER=\"$center\"" >> $TMPFILE
212 echo "# DEFAULT=\"$default\"" >> $TMPFILE
222 echo "$NAME: checking for $1... not found."
229 full
="display -geometry 800x600 -window root"
230 tile
="display -window root"
231 center
="display -backdrop -window root"
239 full
="Esetroot -scale"
259 case `which xsetbg 2>&1` in
261 full
="xsetbg -fillscreen"
263 center
="xsetbg -center"
269 case `which xli 2>&1` in */*xli
)
270 full
="xli -fillscreen -onroot -quiet"
271 tile
="xli -onroot -quiet"
272 center
="xli -center -onroot quiet"
293 full
="xv -max -smooth -root -quit"
294 tile
="xv -root -quit"
295 center
="xv -rmode 5 -root -quit"
303 [ -f $TMPFILE ] && rm -f $TMPFILE
309 trap rm_tmpfiles INT QUIT STOP TERM
311 if [ "$ARGUMENT" != "-r" ]; then
312 echo "$NAME: running X as root is a security hazard, and is NOT a good idea!"
313 echo "$NAME: if you insist upon having a ~/.bsetbgrc for root, run bsetbg with"
314 echo "$NAME: the '-r' flag to force its creation. you have been warned!"
321 echo "$NAME: creating configuration for root (BAD IDEA)..."
324 echo "$NAME: $CONFIG not found, creating..."
327 for app
in $IMAGE_APPS; do
331 if [ -z "$FULL" ] || [ -z "TILE" ] || [ -z "$CENTER" ]; then
336 echo "# $CONFIG" >> $CONFIG
338 echo "# automagically generated with loving care by $NAME $VERSION on `date`" >> $CONFIG
340 echo "# uncomment the set below that corresponds to your favorite root-image" >> $CONFIG
341 echo "# application, or mix and match to suit your pleasure." >> $CONFIG
343 echo "# xli misbehaves under larger screen resolutions when using the -fillscreen" >> $CONFIG
344 echo "# option. use -fullscreen if your resolution is higher than 1024x768." >> $CONFIG
346 echo; echo >> $CONFIG
347 echo "### $APP" >> $CONFIG
348 echo "FULL=\"$FULL\"" >> $CONFIG
349 echo "TILE=\"$TILE\"" >> $CONFIG
350 echo "CENTER=\"$CENTER\"" >> $CONFIG
351 echo "DEFAULT=\"$DEFAULT\"" >> $CONFIG
354 cat $TMPFILE | grep -v $APP >> $CONFIG
358 if [ -f $CONFIG ]; then
359 echo "$NAME: default configuration was created in $CONFIG."
361 echo "ERROR: $CONFIG not found!" && exit 1
368 case `which $1 2>&1` in
370 BGAPP_MSG
="`which $1`"
373 BGAPP_MSG
="$BGAPP: not found"
374 APP_ERROR
=`expr $APP_ERROR + 1`
384 if [ -z "$FULL" ]; then
385 FULL_MSG
="(no value)" && ERROR
=`expr $ERROR + 1`
387 check_config_apps
$FULL
388 FULL_BGAPP_MSG
=$BGAPP_MSG
393 if [ -z "$TILE" ]; then
394 TILE_MSG
="(no value)" && ERROR
=`expr $ERROR + 1`
396 check_config_apps
$TILE
397 TILE_BGAPP_MSG
=$BGAPP_MSG
402 if [ -z "$CENTER" ]; then
403 CENTER_MSG
="(no value)" && ERROR
=`expr $ERROR + 1`
405 check_config_apps
$CENTER
406 CENTER_BGAPP_MSG
=$BGAPP_MSG
411 if [ -z "$DEFAULT" ]; then
412 DEFAULT_MSG
="(no value)" && ERROR
=`expr $ERROR + 1`
414 check_config_apps
$DEFAULT
415 DEFAULT_BGAPP_MSG
=$BGAPP_MSG
417 DEFAULT_MSG
="$DEFAULT"
429 case $FULL_BGAPP_MSG in *"not found")
438 case $TILE_BGAPP_MSG in *"not found")
447 case $CENTER_BGAPP_MSG in *"not found")
457 case $DEFAULT_BGAPP_MSG in *"not found")
462 if [ "$IMAGE_EXISTS" != yes ]; then
466 case $VALUE in "(no value)")
467 if [ -n "$APP" ]; then
478 if [ ! -f $CONFIG ]; then
493 IMAGE
="$HOME/`basename $IMAGE`"
501 if [ -n "$IMAGE" ]; then
506 case $IMAGE in $ARGUMENT|"."|"./")
511 if [ ! -e "$IMAGE" ]; then
521 case `which $APP 2>&1` in
525 exec $APP $ARGS "$IMAGE"
530 exec $FB_ARG "$IMAGE"
535 check_bsetroot_args
()
539 ARGS
="$1 $2 $3 $4 $5 $6 $7"
542 ARGS
="$1 $2 $3 $4 $5 $6"
552 case `which bsetroot 2>&1` in
564 if [ -f $CONFIG ]; then
566 if [ -n "$BGAPP" ] || [ -n "$CENTER_ARGS" ] || \
567 [ -n "$TILED_ARGS" ] || [ -n "$OTHER_ARGS" ] || \
568 [ -n "$DEFAULT_ARGS" ]; then
569 echo " this version of $NAME ($VERSION) no longer uses the old configuration format."
570 echo " please update $CONFIG with the new syntax:"
572 echo " CENTER=\"value\""
573 echo " FULL=\"value\""
574 echo " TILE=\"value\""
575 echo " DEFAULT=\"value\""
577 echo " see the sample.config file for details."
586 echo "DEBUG:--------------------------"
587 echo "config: $CONFIG"
590 echo "center: $CENTER"
591 echo "default: $DEFAULT"
593 echo "app error: $APP_ERROR"
594 echo "argument: $ARGUMENT"
595 echo "________________________________"
599 IMAGE_APPS
="display Esetroot wmsetbg xv xli qiv"
600 CONFIG
="$HOME/.bsetbgrc"
603 MORE
="(C) 2000 by lordzork industries (http://lordzork.com/)"
604 PATH
=$PATH:/usr
/bin
:/usr
/local
/bin
:/usr
/X
11R
6/bin
:/usr
/X
11/bin
605 TMPFILE
=`tempfile --prefix=bsetbg`
609 case `which grep 2>&1` in */*grep) : ;;
617 IMAGE
=$2 && check_image
622 IMAGE
=$2 && check_image
627 IMAGE
=$2 && check_image
628 exec $CENTER "$IMAGE"
640 COMMAND
=`shift 1 && echo $*`
649 -mod|-gradient|-solid)
650 check_bsetroot_args $
*
654 shift 1 && check_bsetroot_args $
*
655 ARGS
="-display $ARGS"
664 echo; echo " $NAME version $VERSION"; echo " $MORE"; exit 0
672 if [ -f $CONFIG ]; then
685 IMAGE
=$1 && check_image
686 check_config
&& final_error_check
689 if [ ! -f $CONFIG ]; then
690 create_config
&& exit 0