- Improved rand():
make use of /dev/urandom instead /proc/uptime to become a random string. - Eliminated $max_number: Themes do not need to conatin $max_number colors. Maximum number of xterms is not limited. - $number was renamed in $many, to be more different to the counters. - increased minor version
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
#!/bin/bash
|
||||
# LOC ~/scripts/xtermmaker.sh
|
||||
# CVS $Id: xtermmaker.sh,v 1.3 2003/02/19 12:54:18 heinzel Exp $
|
||||
version='xtermmaker.sh Version 3.3 $Revision: 1.3 $ ($Date: 2003/02/19 12:54:18 $ $Author: heinzel $)'
|
||||
# CVS $Id: xtermmaker.sh,v 1.4 2003/10/13 11:17:20 heinzel Exp $
|
||||
version='xtermmaker.sh Version 3.4 $Revision: 1.4 $ ($Date: 2003/10/13 11:17:20 $ $Author: heinzel $)'
|
||||
|
||||
### config ###
|
||||
xterm=xterm
|
||||
xterm_opts="-sb -sl 1024"
|
||||
|
||||
number=1
|
||||
max_number=9
|
||||
many=1
|
||||
|
||||
rsh=ssh
|
||||
host=""
|
||||
@@ -16,12 +15,11 @@ user=""
|
||||
|
||||
color=RAND
|
||||
theme=light
|
||||
themes="traditional, light"
|
||||
|
||||
# NOTE: Themes MUST have $max_number colors defined
|
||||
theme_traditional="SteelBlue,SeaGreen,orange,gold,tomato,CadetBlue,SlateGrey,MediumSeaGreen,Goldenrod"
|
||||
|
||||
theme_light="SlateGrey,MediumSeaGreen,Goldenrod,IndianRed,CadetBlue,DarkSeaGreen,khaki,CornflowerBlue,orange"
|
||||
theme_blay="lavender,DimGray,SlateGray,LightSlateGray,LightSteelBlue,SkyBlue,CornflowerBlue,SteelBlue"
|
||||
themes="`set | grep "^theme_" | cut -f1 -d= | cut -c7- | tr '\n' ' '`"
|
||||
|
||||
# if cols > 0, we arange the possitions of the xterms in $cols columns
|
||||
cols=0
|
||||
@@ -40,13 +38,13 @@ print_version()
|
||||
|
||||
print_help()
|
||||
{
|
||||
cat <<E-O-H
|
||||
cat <<EOH
|
||||
|
||||
Usage: xtermmaker.sh [-n <number>] [-C <columns>] [-u <user>] [-r <host>]
|
||||
[-c <color>] [-g] [-b] [-z] [--t <theme>]
|
||||
[-c <color>] [-g] [-b] [-z] [-t <theme>]
|
||||
[-h,--help] [-V,--version]
|
||||
|
||||
-n Opens <number> xterms (default: $number) (max: $max_number).
|
||||
-n Opens <number> xterms (default: $number).
|
||||
-C If specified, the xterms will be aranged in <columns> columns.
|
||||
|
||||
-r Exec remote shell to the specified hostname.
|
||||
@@ -59,20 +57,19 @@ Usage: xtermmaker.sh [-n <number>] [-C <columns>] [-u <user>] [-r <host>]
|
||||
-t Use color theme <theme> for 'Bunte XTerms'.
|
||||
Possible themes: $themes (default: $theme)
|
||||
|
||||
E-O-H
|
||||
EOH
|
||||
}
|
||||
|
||||
rand()
|
||||
{
|
||||
# Usage: rand <int>
|
||||
local i="${1:-1}"
|
||||
local f=/proc/uptime
|
||||
local f="/dev/urandom"
|
||||
local b=""
|
||||
local p=0
|
||||
|
||||
b=`md5sum $f | tr -d "[:alpha:] [:punct:]"`
|
||||
p=`expr ${#b} - 1`
|
||||
b=`echo $b | cut -c ${p}-`
|
||||
b="`dd if=\"$f\" bs=8 count=1 2>/dev/null | md5sum | \
|
||||
tr -d \"[:alpha:] [:punct:]\" | cut -c-2`"
|
||||
|
||||
expr \( $b \* $i \) / 100 + 1
|
||||
}
|
||||
@@ -92,7 +89,7 @@ while test $# -gt 0 ; do
|
||||
exit 0
|
||||
;;
|
||||
-n|-number|--number)
|
||||
number="$2"
|
||||
many="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
@@ -138,28 +135,35 @@ done
|
||||
|
||||
### action ###
|
||||
|
||||
test "$number" || number=1
|
||||
test "$number" -le "$max_number" || number=$max_number
|
||||
test "$many" || number=1
|
||||
|
||||
# position of the first window
|
||||
column=1
|
||||
hpos="$hoffset"
|
||||
vpos="$voffset"
|
||||
|
||||
count=1
|
||||
until test $count -gt $number ; do
|
||||
eval colors=\$theme_$theme
|
||||
ncolors="`echo \"$colors\" | tr -d [[:alnum:]]`"
|
||||
ncolors="${#ncolors}"
|
||||
|
||||
title_opt="-title $count"
|
||||
xterm_count=1
|
||||
color_count=1
|
||||
until test $xterm_count -gt $many ; do
|
||||
|
||||
title_opt="-title $xterm_count"
|
||||
|
||||
case "$color" in
|
||||
BUNT)
|
||||
eval colors=\$theme_$theme
|
||||
bg_opt="-bg `echo $colors | cut -f $count -d ,`"
|
||||
bg_opt="-bg `echo $colors | cut -f $color_count -d ,`"
|
||||
if test "$color_count" -le "$ncolors" ; then
|
||||
color_count=`expr $color_count + 1`
|
||||
else
|
||||
color_count=1
|
||||
fi
|
||||
;;
|
||||
RAND)
|
||||
eval colors=\$theme_$theme
|
||||
buf=`rand $max_number`
|
||||
bg_opt="-bg `echo $colors | cut -f $buf -d ,`"
|
||||
color_count=`rand $ncolors`
|
||||
bg_opt="-bg `echo $colors | cut -f $color_count -d ,`"
|
||||
;;
|
||||
*)
|
||||
bg_opt="-bg $color"
|
||||
@@ -195,8 +199,7 @@ until test $count -gt $number ; do
|
||||
fi
|
||||
|
||||
$xterm $xterm_opts $title_opt $bg_opt $fg_opt $pos_opt $exec_opt &
|
||||
|
||||
count=`expr $count + 1`
|
||||
xterm_count=`expr $xterm_count + 1`
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user