12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/sh
- set -e
- read -r filename
- ICON_MAXSIZE=512
- if [ "${filename%%:*}" = xdgicon ]; then
- filename="$(/usr/lib/qubes/xdg-icon "${filename#*:}" "$ICON_MAXSIZE")"
- forcemaxsize="$ICON_MAXSIZE"
- [ -n "${filename}" ]
- elif [ "${filename}" = "-" ] || [ "${filename##*:}" = "-" ]; then
- tmpfile="$(mktemp /tmp/qimg-XXXXXXXX)"
- cat > "${tmpfile}"
- if [ "${filename##*:}" = "-" ]; then
- filename="${filename%:*}:${tmpfile}"
- else
- filename="${tmpfile}"
- fi
- elif ! [ -r "${filename}" ]; then
- exit 1
- fi
- s="$(identify -format '%w %h %m' "$filename")"
- w="$(echo "$s"|cut -d " " -f 1)"
- h="$(echo "$s"|cut -d " " -f 2)"
- m="$(echo "$s"|cut -d " " -f 3)"
- if [ "$m" = SVG ]; then
- tmpfile2="$(mktemp /tmp/qimg-XXXXXXXX.png)"
- rsvg-convert -o "$tmpfile2" "$filename"
- # downscale the image if necessary
- if [ -n "$forcemaxsize" ] && \
- ( [ "$w" -gt "$forcemaxsize" ] || [ "$h" -gt "$forcemaxsize" ] ); then
- convert "$tmpfile2" -scale "${forcemaxsize}x${forcemaxsize}" "$tmpfile2"
- # read the size again, because icon may not be a square
- s="$(identify -format '%w %h' "$tmpfile2")"
- w="$(echo "$s"|cut -d " " -f 1)"
- h="$(echo "$s"|cut -d " " -f 2)"
- fi
- filename="$tmpfile2"
- fi
- echo "$w $h"
- convert -depth 8 -size "${w}x${h}" "$filename" rgba:-
- if [ -n "${tmpfile}" ]; then
- rm -f "${tmpfile}"
- fi
- if [ -n "${tmpfile2}" ]; then
- rm -f "${tmpfile2}"
- fi
- # vim: ft=sh ts=4 sw=4 et
|