diff options
author | Wesley Shields <wxs@FreeBSD.org> | 2009-04-22 15:13:03 +0000 |
---|---|---|
committer | Wesley Shields <wxs@FreeBSD.org> | 2009-04-22 15:13:03 +0000 |
commit | 833191c2c5db8b75837527a13f6e743f52600029 (patch) | |
tree | 2862ccd717ba7207313dd12c7984f93259166df0 /x11/printscreen/files | |
parent | 86639a7dabf5976bb5cdbeb833c3b46d6f847d7c (diff) | |
download | ports-833191c2c5db8b75837527a13f6e743f52600029.tar.gz ports-833191c2c5db8b75837527a13f6e743f52600029.zip |
Notes
Diffstat (limited to 'x11/printscreen/files')
-rw-r--r-- | x11/printscreen/files/printscreen.in | 87 |
1 files changed, 81 insertions, 6 deletions
diff --git a/x11/printscreen/files/printscreen.in b/x11/printscreen/files/printscreen.in index da9238e43dcd..3a2e7dbaacd7 100644 --- a/x11/printscreen/files/printscreen.in +++ b/x11/printscreen/files/printscreen.in @@ -1,13 +1,88 @@ #!/bin/sh -PATH=/bin:/usr/local/bin +PATH=/bin:/usr/bin:/usr/local/bin +xwdcommon='-nobdrs' +xwdroot='-root' + +INFMT=pnm +OUTFMT=png STOREDIR="${HOME}/.screenshots" SHOTDATE="$(date +%Y.%m.%d-%H.%M.%S)" -SHOTNAME="${STOREDIR}/screenshot-${SHOTDATE}.png" -if [ ! -d "${STOREDIR}" ]; then - mkdir "${STOREDIR}" -fi +parse_options() +{ + local OPT OPTARG OPTIND fmt fmtlist i + + while getopts d:f:bhlqs OPT; do + # escape meta + OPTARG=${OPTARG%%[;\\\$]*} + + case ${OPT} in + b) xwdcommon="${xwdcommon} -frame" ;; + d) delay="${OPTARG}" ;; + f) + OUTFMT="${OPTARG}" + unset INFMT + + for fmt in pnm pbm pgm ppm; do + if [ -x /usr/local/bin/${fmt}to${OUTFMT} ]; then + INFMT=${fmt} + break + fi + done + + [ -z "${INFMT}" ] && usage + ;; + l) + for i in /usr/local/bin/p[nbgp]mto*; do + fmtlist="${fmtlist} $(echo ${i} | \ + sed -Ee's:/usr/local/bin/(pnm|pbm|pgm|ppm)to::')" + done + echo Supported output formats: + echo ${fmtlist} + exit 0 + ;; + q) xwdcommon="${xwdcommon} -silent";; + s) unset xwdroot ;; + h|*) usage ;; + esac + done + + OPTC=$((${OPTIND} - 1)) +} + +usage() +{ + echo "usage: ${0##*/} [-bhlqs] [-d sec] [-f outfmt] [shotname]" + echo ' -b when selecting a window, grab wm border too' + echo ' -d wait sec seconds before taking a shot' + echo ' -f set output format' + echo ' -h display this help and exit' + echo ' -l list output formats' + echo ' -q be silent' + echo ' -s interactively choose a window' + echo + echo "Screenshots stored in ${HOME}/.screenshots" + echo + exit 1 +} + +parse_options ${1+"$@"} +shift ${OPTC} + +if [ -z ${@+1} ]; then + SHOTNAME="${STOREDIR}/screenshot-${SHOTDATE}.${OUTFMT}" +else + SHOTNAME=$1 + shift + + [ -z ${@+1} ] || usage +fi + +[ -d "${STOREDIR}" ] || mkdir "${STOREDIR}" + +[ -n "${delay}" ] && sleep "${delay}" -xwd -root | xwdtopnm 2>/dev/null | pnmtopng 2>/dev/null > "${SHOTNAME}" +xwd ${xwdcommon} ${xwdroot} | xwdtopnm 2>/dev/null | \ + "${INFMT}to${OUTFMT}" 2>/dev/null > "${SHOTNAME}" |