Screenshots von WM/DM/Konsole
Version vom 24. Juni 2007, 17:00 Uhr von B3ll3roph0n (Diskussion | Beiträge)
Screenshots von WM/DM/Konsole
Ein Script um Screenshots vom Windowmanager, Displaymanager oder der Konsole zu erstellen
Das Script wird wie folgt aufgerufen:
/pfad/zu/x-shot [OPTIONEN]
Optionen:
-d | --dir /home/user/screenshots Pfad unter dem die Screenshots gespeichert werden. Ein Unterordner (Jahr-Monat-Tag - z.B. 2007-03-12) wird automatisch angelegt. -e | --ext [jpg | png | ...] Format des Bildschirmphotos. Grundsätzlich sollten alle Formate, die von ImageMagick (import / convert) unterstützt werden, erlaubt sein - getestet wurden aber nur jpg und png. Ausnahme: Modus console - da fbgrab nur PNGs ausgibt, wird das Format automatisch auf png gesetzt. -w | --wait <num> Verzögerung bis zur Aufname des Bildschirmphotos -q | --quality <num> Qualität des Bildschirmphotos. Von 0 = schlechteste bis 100 = beste Qualität. Je nach Qualität ändert sich natürlich auch die Größe der Bilddatei (hohe Qualität = große Datei | schlechte Qualität = kleine Datei). -m | --modus [screen | area | window | dm | console] Modus des Screenshots: console = Screenshot mit fbgrab aus der Konsole. dm = Screenshot des X-Servers mit xwd aus der Konsole. Um z.B. einen Screenshot von Displaymanager zu machen. area = Screenshot eines Bildschirm-Bereichs. Auswahlrechteck mit der Maus aufziehen. window = Screenshot eines Fensters. Auswahl mit Mausklick. screen = Screenshot des gesamten Bildschirms
Defaultwerte (wenn das Script ohne Parameter aufgerufen wird):
Verzeichnis: Homeverzeichnis (des jeweiligen Users)
Format: JPEG
Qualität: 75%
Verzögerung: Keine (0)
Modus: Kompletter Bildschirn (screen)
Benötigte Programme/Pakete:
- import und convert (ImageMagick)
- xwd
- fbgrab
Script:
#!/bin/sh ################################################################################ # Filename: /usr/local/bin/x-shot # Purpose: screenshot script # License: This file is licensed under the Creative Commons ################################################################################ ARGV="$@" PRGNAME=$(basename $0) DIR="${HOME}"; EXT="jpg"; # jpeg png WAIT="0"; QUALITY="75"; # 0-100 MODUS="screen"; # area window dm console MAGICK=`which import 2> /dev/null`; XWD=`which xwd 2> /dev/null`; FBGRAB=`which fbgrab 2> /dev/null`; SLEEP=`which sleep 2> /dev/null`; CHVT=`which chvt 2> /dev/null`; DATE=`date "+%Y-%m-%d"`; FILE=`date "+%Y%m%d_%H%M"`; ########################################################################## if [ $# -gt 0 ]; then set -- $ARGV; OPT="ext:,dir:,quality:,wait:,modus:"; TEMP=$(getopt --options=e:d:q:w:m: --long $OPT -n $PRGNAME -- "$@"); if [ $? -ne 0 ]; then echo "Exiting..." >&2; exit 100; fi; eval set -- "$TEMP"; while true; do case $1 in --ext|-e) if [ $MODUS == "console" ]; then EXT="png"; else EXT="$2"; fi; shift; ;; --dir|-d) DIR="$2"; shift; ;; --quality|-q) QUALITY="$2"; shift; ;; --wait|-w) WAIT="$2"; shift; ;; --modus|-m) MODUS="$2"; case $MODUS in area|window|screen) PREF="wm"; ;; dm) PREF="dm"; ;; console) PREF="console"; ;; esac; shift; ;; --) break;; *) echo "Unknow argument \"$1\"!"; exit 100;; esac; shift; done; fi; [ ! -d "${DIR}/${DATE}" ] && (mkdir -p "${DIR}/${DATE}" || (echo -e "Cannot create directory ${DIR}/${DATE}!\nExiting ..."; exit 1;)); if [ -e "${DIR}/${DATE}/${PREF}_${FILE}.${EXT}" ]; then x=0; while [ -e "${DIR}/${DATE}/${PREF}_${FILE}-$x.${EXT}" ]; do x=`expr $x + 1`; done; SCREEN="${FILE}-$x.${EXT}"; else SCREEN="${FILE}.${EXT}"; fi; case $MODUS in screen) if [ -z "$MAGICK" ]; then echo -e "import (ImageMagick) not found!\nExiting ..."; exit 1; else [ "$WAIT" -gt 0 ] && "$SLEEP" "$WAIT"; "$MAGICK" -quiet -silent -quality "$QUALITY" -window root "${DIR}/${DATE}/${PREF}_${SCREEN}"; fi; ;; area|window) if [ -z "$MAGICK" ]; then echo -e "import (ImageMagick) not found!\nExiting ..."; exit 1; else [ "$WAIT" -gt 0 ] && "$SLEEP" "$WAIT"; "$MAGICK" -quiet -silent -quality "$QUALITY" "${DIR}/${DATE}/${PREF}_${SCREEN}"; fi; ;; dm) if [ -z "$XWD" ]; then echo -e "xwd not found!\nExiting ..."; exit 1; else "$CHVT" 7; "$([ "$WAIT" -gt 0 ] && echo -n "$SLEEP $WAIT")"; XAUTHORITY="$(ps ax | grep '[-]auth' | awk '{print $NF}')"; "$XWD" -display :0 -root | convert - "$EXT":"${DIR}/${DATE}/${PREF}_${SCREEN}"; fi; ;; console) if [ -z "$XWD" ]; then echo -e "fbgrab not found!\nExiting ..."; exit 1; else "$FBGRAB" -s "$([ "$WAIT" -gt 0 ] && echo -n "$WAIT")" "${DIR}/${DATE}/${PREF}_${SCREEN}"; fi; ;; *) echo -e "No or unknown mode specified.\nExiting ..."; exit 1; esac; # End of file