From f28ac3b625558cffd63dbf7221967f9fc21627d0 Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Sun, 27 Apr 2003 15:33:26 +0000
Subject: replacing bsetbg

---
 util/fbsetbg | 282 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 282 insertions(+)
 create mode 100644 util/fbsetbg

diff --git a/util/fbsetbg b/util/fbsetbg
new file mode 100644
index 0000000..3080846
--- /dev/null
+++ b/util/fbsetbg
@@ -0,0 +1,282 @@
+#!/bin/sh
+#
+# Set wallpaper for fluxbox.
+#
+# Copyright (c) 2003 Han Boetes <han@mijncomputer.nl>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# $Id: fbsetbg,v 1.1 2003/04/27 15:33:26 fluxgen Exp $
+
+#
+# Portability notes:
+# To guarantee this script works on all platforms that support fluxbox
+# please keep the following restrictions in mind:
+#
+# don't use [ -e file ] use [ -r file ]
+# don't use $(), use ``
+# don't use ~, use ${HOME}
+# don't use id -u, use whoami
+# getopts won't work on all platforms, but the config-file can
+# compensate for that.
+#
+
+wpsetters='wmsetbg Esetroot xli xsetbg display qiv xv xsri'
+lastwallpaper=${HOME}/.fluxbox/lastwallpaper
+
+WHOAMI=`whoami`
+[ "$WHOAMI" = "root" ] && PATH=/bin:/usr/bin/:/usr/local/bin:/usr/X11R6/bin
+
+
+# Functions
+display_usage() {
+    cat <<EOF
+Usage: fbsetbg [-fct /path/to/wallpaper ] [ -l ] [ -h ]
+EOF
+}
+
+display_help() {
+    display_usage
+    cat <<EOF
+
+Options:
+
+    -f  Set fullscreen wallpaper
+    -c  Set centered wallpaper
+    -t  Set tiled wallpaper
+
+    -h  Display this help
+
+    -l  Set previous wallpaper
+
+    -d  Debug fbsetbg
+    -T  Tips
+
+Files:
+
+    ~/.fluxbox/lastwallpaper
+
+EOF
+}
+
+display_tips(){
+cat<<EOF
+
+To replace all occurances of bsetbg in a file use this command:
+
+  perl -pi -e 's, bsetbg, fbsetbg,'
+
+If you want to choose your own wallpapers and you want fbsetbg to
+remember the previous wallpaper put this in your ~/.fluxbox/init
+
+  session.screen0.rootCommand:    fbsetbg -l
+
+
+EOF
+}
+
+# ugly code for solaris compat.
+find_it() {
+    file=`which $1 2> /dev/null`
+    if [ -x "$file" ]; then
+        if [ $# -gt 1 ]; then
+            shift
+            $*
+        fi
+        return 0
+    else
+        return 1
+    fi
+}
+
+message() {
+    xmessage -center "$@"
+}
+
+debugfbsetbg (){
+
+    standardrant (){
+        cat <<EOF
+
+$WPSETTER sets the 'wrong' wallpaper. transparant apps like aterm and
+xchat wont work right with it. Consider using wmsetbg (from windowmaker)
+or Esetroot (from Eterm)
+
+EOF
+    }
+
+    for wpsetter in $wpsetters; do
+        if find_it $wpsetter; then
+            WPSETTER=$wpsetter
+            break
+        fi
+    done
+
+    case $WPSETTER in
+        xsri)
+            echo 'Actually I never heard of this app.'
+            ;;
+        display)
+            standardrant
+            ;;
+        Esetroot)
+            echo 'Esetroot is a nice app :)'
+            echo "You won't have any problems"
+            ;;
+        wmsetbg)
+            echo 'wmsetbg is my favourite :)'
+            echo "You won't have any problems"
+            ;;
+        xsetbg)
+            standardrant
+	    ;;
+        xli)
+            standardrant
+            ;;
+        qiv)
+            standardrant
+            ;;
+        xv)
+            standardrant
+            ;;
+        '')
+            cat <<EOF
+
+I Can't find and app to set the wallpaper with. You can install one in
+many many ways but I will give you some simple advice: install Eterm and
+your set. Eterm provides Esetroot and thats a great wallpapersetter. I
+recommend you install the package provided by your distro.
+
+EOF
+    esac
+    exit 0
+}
+
+if [ $1 = -d ];then
+    debugfbsetbg
+fi
+
+# Find the default wallpapersetter
+# The precise order is up for debate.
+for wpsetter in $wpsetters; do
+    if find_it $wpsetter; then
+        WPSETTER=$wpsetter
+        break
+    fi
+done
+
+case $WPSETTER in
+    xsri)
+	full='--center-x --center-y --scale-width=100 --scale-width=100'
+	tile='--tile'
+	center='--center-x --center-y'
+        ;;
+    display)
+        full='-geometry 800x600 -window root'
+        tile='-window root'
+        center='-backdrop -window root'
+        ;;
+    Esetroot)
+        full='-scale'
+        tile=''
+        center='-c'
+        ;;
+    wmsetbg)
+        full='-s -S'
+        tile='-t'
+        center='-b black -e'
+        ;;
+    xsetbg)
+	full='-fillscreen'
+	tile=''
+	center='-center'
+	;;
+    xli)
+	full='-fillscreen -onroot -quiet'
+	tile='-onroot -quiet'
+	center='-center -onroot quiet'
+        ;;
+    qiv)
+        full='--root_s'
+        tile='--root_t'
+        center='--root'
+        ;;
+    xv)
+        full='-max -smooth -root -quit'
+        tile='-root -quit'
+        center='-rmode 5 -root -quit'
+        ;;
+    '')
+            message "Can't find and app to set the wallpaper with.
+Use fbsetbg -d to find out what to do next"
+            exit 1
+esac
+
+#Get options.
+getopts ":f:c:t:Tlh-" COMMAND_LINE_ARGUMENT
+case "${COMMAND_LINE_ARGUMENT}" in
+    f) option=$full
+        wallpaper=$OPTARG
+        echo $option > $lastwallpaper
+        echo $wallpaper >> $lastwallpaper
+        ;;
+    c) option=$center
+        wallpaper=$OPTARG
+        echo $option > $lastwallpaper
+        echo $wallpaper >> $lastwallpaper
+        ;;
+    t) option=$tile
+        wallpaper=$OPTARG
+        echo $option > $lastwallpaper
+        echo $wallpaper >> $lastwallpaper
+        ;;
+    l)
+        if [ -r $lastwallpaper ];then
+            option=$(head -n1 $lastwallpaper)
+            wallpaper=$(tail -n1 $lastwallpaper)
+        else
+            message 'No previous wallpaper recorded.'
+        fi
+        ;;
+    h) display_help ; exit 0 ;;
+    T) display_tips ; exit 0 ;;
+    -) echo "fbsetbg doesn't recognize -- gnu-longopts."
+        echo "Use fbsetbg -h for a long help message."
+        display_usage
+        exit 1
+        ;;
+esac
+
+option=${option:=$full}
+wallpaper=${wallpaper:=$1}
+
+if [ -z "$wallpaper" ];then
+    message 'No wallpaper to set'
+    exit 1
+fi
+
+if [ ! -r "$wallpaper" ];then
+    message "Can't find wallpaper $wallpaper"
+    exit 1
+fi
+
+$WPSETTER $option "$wallpaper" || message "Something went wrong while setting the wallpaper
+Run '$WPSETTER $option "$wallpaper"' from an xterm to find out what."
+#remember previous wallpaper
-- 
cgit v0.11.2