screenshot.sh [<setup>]
screenshot.sh setupUne fois les variables définies, vous pourrez appeler simplement le script depuis la ligne de commande, ou bien depuis un "lanceur" sur votre bureau ou encore dans la barre des tâches.
#! /bin/bash
# @(#)
# @(#) screenshot 17/06/2007
# @(#) version 0.1 - auteur : JP
# @(#)
# @(#) screenshot est un petit programme de capture d'écran basé sur
# @(#) ImageMagic et faisant appel à Xdialog
# @(#)
# @(#) Usage : screenshot [< setup >]
# @(#)
### Fonction setup ###
function setup {
# Effacement des valeurs avant initialisation
sed -i '/^#A$/,/^#Z$/ s|^REPERTOIRE=.*|REPERTOIRE=|' $0
sed -i '/^#A$/,/^#Z$/ s|^NOM_IMAGE=.*|NOM_IMAGE=|' $0
sed -i '/^#A$/,/^#Z$/ s|^EXT=.*|EXT=|' $0
# Choix répertoire
REPERTOIRE=$(Xdialog --stdout --title "Répertoire" --dselect "$HOME" 0 0)
#Récupération du code retour
RETVAL="$?"
# Test variable vide. Si oui initialisation valeur par défaut
if [ -z "${REPERTOIRE}" ]
then REPERTOIRE="${HOME}/"
fi
# Test code retour Xdialog (voir doc Xdialog pour + d'info)
#+ Avec un code égal à 0 on initialise la variable REPERTOIRE avec la valeur fournie
#++ Dans tous les autres cas elle est initialisée à la valeur par défaut ($HOME)
case "$RETVAL" in
0) sed -i "/^#A$/,/^#Z$/ s|REPERTOIRE=|&\"${REPERTOIRE}\"|" $0
mkdir -p "$REPERTOIRE";;
*) Xdialog --title "Annulation" --msgbox "\nLe répertoire par défaut\n\n$HOME\n\n\
sera utilisé...\n" 10 50
sed -i "/^#A$/,/^#Z$/ s|REPERTOIRE=|&\"$HOME/\"|" $0;;
esac
# Choix nom
NOM_IMAGE=$(Xdialog --stdout --title "Nom d'image" \
--inputbox "Entrez un nom de référence pour les images" 0 0)
RETVAL="$?"
if [ -z "${NOM_IMAGE}" ]
then NOM_IMAGE="capture"
fi
case "$RETVAL" in
0) sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"${NOM_IMAGE}\"/" $0;;
*) Xdialog --title "Annulation" --msgbox "\nLe nom générique par défaut\n\ncapture\n\n\
sera utilisé...\n" 10 50
sed -i "/^#A$/,/^#Z$/ s/NOM_IMAGE=/&\"capture\"/" $0;;
esac
# Choix extension
Xdialog --no-tags --radiolist "Type d'extension" 0 0 7 \
".png" "png - Portable Network Graphic" on \
".jpg" "jpg ou jpeg - Joint Photographic Experts Group" off \
".gif" "gif - Graphic Interchange Format" off \
".bmp" "bmp - BitMaP" off \
".tif" "tif ou tiff - Tag(ged) Image File Format" off 2>/tmp/radiolist.tmp.$$
RETVAL=$?
EXT=$(cat /tmp/radiolist.tmp.$$)
rm -f /tmp/radiolist.tmp.$$
case $RETVAL in
0) sed -i.4.bak "/^#A$/,/^#Z$/ s/EXT=/&\"${EXT}\"/" $0;;
*) Xdialog --title "Annulation" --msgbox "\nL'extension générique par défaut\n\npng\n\n\
sera utilisée...\n" 10 50
sed -i.5.bak "/^#A$/,/^#Z$/ s/EXT=/&\"\.png\"/" $0;;
esac
Xdialog --title "Setup" --msgbox "\nLes paramètres de configuration suivant ont été mis à jour :\
\n\nREPERTOIRE = ${REPERTOIRE}\
\nNom = ${NOM_IMAGE}\
\nExtension = ${EXT}\
\n\nVeuillez relancer le script s'il vous plaît...\
\n\n" 0 0
# Le setup est fini, on quitte le script
exit
}
# Test de l'existence d'un paramètre (setup)
if [ -n "$1" ]
then
case "$1" in
setup) setup # Paramètre présent, on lance la fonction
;;
*) Xdialog --title "Erreur" --msgbox "\nLe script ne prend qu'un paramètre\
\nen option.\n\nUsage : screenshot < setup >\n" 0 0
exit
;;
esac
fi
# On supprime la fonction de la mémoire
unset setup
### Déclaration des variables (après lancement du setup)
#A
REPERTOIRE=
NOM_IMAGE=
EXT=
#Z
# Test de l'existence d'un fichier contenant la valeur de la variable ${NOM_IMAGE}
#+ Si la condition est vraie alors on extrait le numéro du compteur
#++ afin d'incrémenter le compteur ($COUNT) d'un pas
if [ -e $(ls "${REPERTOIRE}" | egrep \b${NOM_IMAGE}) ]
then
NUM=$(ls ${REPERTOIRE} | egrep "\b${NOM_IMAGE}" | sed 's/[^0-9]*//g'| sort -nr | sed 1q)
COUNT=$(expr ${NUM} + 1)
fi
# Boîte de dialogue d'aide à l'ouverture - Facultatif -
/usr/bin/Xdialog --title "Screenshot"\
--msgbox "Vous aurez 3 secondes après la fermeture de cette fenêtre\n\
pour choisir le bureau, ou la fenêtre à mettre en avant-plan\n\
pour réaliser votre capture d'écran."\
0 0
# Commande proprement dite pour la capture, avec un temps de latence de 3 secondes
import -pause 3 ${REPERTOIRE}${NOM_IMAGE}${COUNT}${EXT}
# Création d'un clône de l'image en y insérant un cadre et une annotation extérieure
#+ Épaisseur du cadre / Couleur du fond / Couleur du texte / taille du texte / Emplacement
#++ Label (ici la date reformatée)/ Fichier original / Fichier de sortie
montage -frame 5 -mattecolor black -fill white -pointsize 14 -geometry +0+0 \
-label "$(date '+%A %e %B %Y %H:%M:%S')" ${REPERTOIRE}${NOM_IMAGE}${COUNT}${EXT} ${REPERTOIRE}${NOM_IMAGE}_annote${COUNT}${EXT}




Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.