/usr/bin/wallpaper is in wallpaper 0.1-1ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #!/bin/bash
#
# wallpaper.bash Author: Jan Kandziora <jjj@gmx.de>
# Licensed under the terms of the GNU General Public License, Version 2
# See http://www.gnu.org/licenses/gpl.txt for details
#
# This script tests if an image is useable as a desktop wallpaper.
# A list of image types and a minimum and a maximum width and aspect ratio can be specified.
# If a file passes all the tests, it is returned to stdout.
#
# Note: This script needs GNU getopt, GNU gawk and ImageMagick to run.
#
#
# Standard values.
#
MINIMUM_WIDTH=780
MAXIMUM_WIDTH=4000
MINIMUM_ASPECT=1.30
MAXIMUM_ASPECT=1.36
EXCLUDE_TYPES=""
INCLUDE_TYPES="JPEG,PNG,GIF,GIF87"
VERBOSE=0
#
# Some functions:
#
function usage
{
printf "USAGE: %s [OPTIONS] FILE ...\n" $(basename $0)
printf " -w --min-width Set the minimum width. Defaults to %s.\n" $MINIMUM_WIDTH
printf " -x --max-width Set the maximum width. Defaults to %s.\n" $MAXIMUM_WIDTH
printf " -a --min-aspect Set the minimum aspect ratio. Defaults to %s.\n" $MINIMUM_ASPECT
printf " -b --max-aspect Set the maximum aspect ratio. Defaults to %s.\n" $MAXIMUM_ASPECT
printf " -X --exclude Set the exclude file type list. Defaults to \"%s\".\n" $EXCLUDE_TYPES
printf " -I --include Set the include file type list. Defaults to \"%s\".\n" $INCLUDE_TYPES
printf " -v --verbose Print additonal info to stderr.\n"
printf " --help Print this help and exit.\n"
printf " --version Print the version and exit.\n"
exit 1
}
#
# Test if the needed programs are installed.
#
[ -x "$(which getopt)" ] || { printf "Sorry, GNU getopt is not installed. I will not run without it.\n" >&2; exit 1; }
[ -x "$(which gawk)" ] || { printf "Sorry, GNU gawk is not installed. I will not run without it.\n" >&2; exit 1; }
[ -x "$(which identify)" ] || { printf "Sorry, ImageMagick is not installed. I will not run without its \"identify\" utility.\n" >&2; exit 1; }
#
# Parse the options.
#
GETOPT_RESULT=$(getopt -o vw:x:a:b:X:I: --long verbose,version,help,min-width:,max-width:,min-aspect:,max-aspect:,exclude:,include: -n 'wallpaper.bash' -- "$@")
[ $? != 0 ] && usage >&2
eval set -- "$GETOPT_RESULT"
while true
do
case "$1" in
-v|--verbose) VERBOSE=1; shift;;
--version) printf "%s Version 0.1 Author: Jan Kandziora <jjj@gmx.de>\nLicensed under the terms of the GNU General Public License, Version 2\nSee http://www.gnu.org/licenses/gpl.txt for details\n" $(basename $0) >&2; exit 1;;
--help) usage >&2;;
-w|--min-width) MINIMUM_WIDTH=$2; shift 2;;
-x|--max-width) MAXIMUM_WIDTH=$2; shift 2;;
-a|--min-aspect) MINIMUM_ASPECT=$2; shift 2;;
-b|--max-aspect) MAXIMUM_ASPECT=$2; shift 2;;
-X|--exclude) EXCLUDE_TYPES=$2; shift 2;;
-I|--include) INCLUDE_TYPES=$2; shift 2;;
--) shift ; break ;;
*) echo "Internal error." ; exit 1 ;;
esac
done
#
# Process some parameters.
#
EXCLUDE_TYPES=,${EXCLUDE_TYPES}
INCLUDE_TYPES=,${INCLUDE_TYPES},
#
# Process the files.
#
for FILE
do
IMAGE_INFO=$(identify "$FILE" 2>/dev/null) || continue
echo $IMAGE_INFO | gawk "{ printf(\"%s\n\",substr(\$0,length(\"$FILE\")+2)); }" | gawk \
'{
if (index("'$EXCLUDE_TYPES'",","$1",") != 0) next;
if (index("'$INCLUDE_TYPES'",","$1",") == 0) next;
split($2,geometry,"+");
split(geometry[1],geometry,"x");
width=geometry[1];
height=geometry[2];
aspect=width*1000/height;
minaspect='$MINIMUM_ASPECT'*1000;
maxaspect='$MAXIMUM_ASPECT'*1000;
if (width < '$MINIMUM_WIDTH') { if ('$VERBOSE') printf("\"%s\" is too narrow.\n","'"$FILE"'") >"/dev/stderr"; next; }
if (width > '$MAXIMUM_WIDTH') { if ('$VERBOSE') printf("\"%s\" is too wide.\n","'"$FILE"'") >"/dev/stderr"; next; }
if (aspect < minaspect) { if ('$VERBOSE') printf("\"%s\" is too tall.\n","'"$FILE"'") >"/dev/stderr"; next; }
if (aspect > maxaspect) { if ('$VERBOSE') printf("\"%s\" is too wide.\n","'"$FILE"'") >"/dev/stderr"; next; }
if ('$VERBOSE') printf("\"%s\" is a wallpaper\n","'"$FILE"'") >"/dev/stderr";
printf("%s\n","'"$FILE"'");
}'
done
|