#!/bin/bash
usage()
{
cat << EOF
usage: $0 -t transition_time -s static_time (-d dirs|-r recursive_dirs)
OPTIONS:
-h Show this message
-t required. time of transition between images, in seconds
-s required. time each image is show
-d comma separated list of directories containing images.
-r comma separated list of directories that contain images and
other directories with more images
Either dirs, recursive_dirs, or both is required
EOF
if [[ -z $1 ]]; then exit 1; else exit $1; fi
}
set_img_paths()
{
dir_path=$1
find_opts=$2
for file_path in $(find ${dir_path} ${find_opts} -type f)
do
mime_type=$(file --mime-type ${file_path})
if [[ $mime_type =~ ^.*:[[:space:]]+image/(.*)$ ]]
then
img_paths[${#img_paths[*]}]=$file_path
fi
done
}
while getopts ":hd:r:t:s:" x
do
case $x in
h) usage 0 ;;
t) transition_time=$OPTARG ;;
s) static_time=$OPTARG ;;
d) dirs[${#dirs[*]}]=$OPTARG ;;
r) recursive_dirs[${#recursive_dirs[*]}]=$OPTARG ;;
esac
done
if [[ -z $transition_time ]]; then usage; fi
if [[ -z $static_time ]]; then usage; fi
if [[ ${#dirs[*]} -eq 0 && ${#recursive_dirs[*]} -eq 0 ]]; then usage; fi
# array for our image paths
declare -a img_paths
# loop over directories to search non-recursively for images
for ((i=0; i<${#dirs[*]}; i++))
do
set_img_paths "${dirs[$i]}" "-maxdepth 1"
done
# loop over directories to search recursively for images
for ((i=0; i<${#recursive_dirs[*]}; i++))
do
set_img_paths "${recursive_dirs[$i]}" ""
done
# make sure we have some images
if [[ ${#img_paths[*]} -eq 0 ]]
then
echo "Error: could not find any images"
exit 2
fi
# randomize our array
random_order=$(seq ${#img_paths[*]} | shuf)
i=0
for r in $random_order
do
randomized[$i]=${img_paths[$r-1]}
i=$(( $i + 1 ))
done
# write our background xml file to stdout
echo ""
for ((i=0; i<${#randomized[*]}; i++))
do
img_path=${randomized[$i]}
echo -n "
${static_time}
${img_path}
"
# transition to next image, or, if we are showing the last image, transition back to first image
[[ $(( $i + 1 )) -lt ${#randomized[*]} ]] && next_img=${randomized[$i+1]} || next_img=${randomized[0]}
echo -n "
${transition_time}
${img_path}
${next_img}
"
done
echo " "
Sunday, October 23, 2011
ubuntu oneiric ocelot write desktop background image file
here is a script which takes in path to one or more directories containing images and writes a gnome desktop background file to show those images
Labels:
bash,
oneiric ocelot,
ubuntu
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment