La première version du
script de ce post doit être à peine modifiée pour fonctionner avec Ubuntu 11.04 Unity et
Thunderbird 3. Je l'ai modifié et recopié ci-dessous.
Prérequis: [url=apt://zenity]zenity[/url] et[url= apt://imagemagick] imagemagick[/url]
#!/bin/bash
# Date : 19/10/2005
# Edite le 18/06/2011 par jOoL - www.jool.ch
# Attention : les packages zenity et imagemagick doivent etre installes au prealable
#
# On verifie tout d'abord qu'il y a bien au moins un fichier selectionne
if [ $# -eq 0 ]; then
zenity --warning --title="Attention" --text="Il faut sélectionner au moins un fichier !"
exit 1
fi
# On memorise le nombre de fichiers a envoyer
NB_FILES=$#
# On ecrase une eventuelle precedente liste de fichiers attaches
echo "" > /tmp/attachment.log
# On passe en revue la liste des fichiers a envoyer
(while [ $# -gt 0 ];
do
# Pour chaque fichier on memorise son nom et son uri
FILE_NAME="$1"
FILE_URI="$NAUTILUS_SCRIPT_CURRENT_URI/$FILE_NAME"
# On passe les infos a la fenetre de progression
let "COMPTEUR += 1"
echo "# Traitement du fichier $FILE_NAME ($COMPTEUR/$NB_FILES) ..."
let "PROGRESS = COMPTEUR*100/NB_FILES"
echo $PROGRESS
# On teste si le fichier est une image
# Remarque : bizarrement, la ligne suivante ne marche pas si l'image est sur le bureau ...
# IS_IMAGE=`file -bi "$FILE_NAME" | grep -c image`
# On procede donc differemment ...
# La ligne suivante est eventuellement a adapter pour prendre en compte d'autres
# types de fichier image. Ici on ne reduit que les .jpg
# Par exemple si on veut reduire les .jpg, les .gif et les .png on peut ecrire
# IS_IMAGE=`echo $FILE_NAME | grep -c -E [.]jpg\|[.]gif\|[.]png`
IS_IMAGE=`echo $FILE_NAME | grep -c -E [.]jpg`
if [ $IS_IMAGE != 0 ]; then
# Si c'est une image on demande une fois (pour toutes) la definition souhaitee
# pour cette image (et les eventuelles autres)
if [ ! $DEF_ASKED ]; then
# On attend un peu pour que la fenêtre n'arrive pas avant la fenetre de progression ...
sleep 2
DEF=`zenity --list --title "Redimensionner l'(es) image(s) ..." --text="Choisir une définition maximum ci-dessous
(ou cliquer sur Annuler pour envoyer les images sans modification)" --radiolist --column "" --column "Taille" FALSE 1280x1024 TRUE 1024x768 FALSE 800x600 FALSE 640x480`
MAX_DEF=`echo "$DEF" | awk -F'x' '{ print $1 }'`
DEF="${MAX_DEF}x${MAX_DEF}"
DEF_ASKED=1
fi
if [ "$DEF" != "x" ]; then
# Si une definition a ete specifiee, on va contruire
# une copie de l'image (reduite) dans la corbeille
# Bizarrement, la ligne suivante ne marche pas toujours si l'image est sur le bureau
# convert "$FILE_NAME" -resize $DEF "$HOME/.Trash/$FILE_NAME"
# On fait donc quelque chose de plus complique ...
WORKDIR="$(echo $NAUTILUS_SCRIPT_CURRENT_URI | sed ' s/file:\/\///g
s/%20/\ /g
s/%23/\#/g
s/%24/\$/g
s/%25/\%/g
s/%35/\?/g
s/%3B/\;/g
s/%3C/\</g
s/%3E/\>/g
s/%40/\@/g
s/%5B/\[/g
s/%26/\&/g
s/%2C/\,/g
s/%5E/\^/g
s/%5D/\]/g
s/%60/\`/g
s/%7B/\{/g
s/%7C/\|/g
s/%7D/\}/g
s/%C3%A9/\é/g
s/%C3%B9/\ù/g
s/%C3%A8/\è/g
s/%C3%A7/\ç/g
s/%C3%A0/\à/g')"
convert "$WORKDIR/$FILE_NAME" -scale $DEF "$HOME/.Trash/$FILE_NAME"
# On memorise l'uri de l'image reduite a la place de celle de l'image d'origine
FILE_URI="file://$HOME/.Trash/$FILE_NAME"
fi
fi
# On rajoute l'uri du fichier a la liste
if [ "$ATTACHMENT" == "" ]; then
ATTACHMENT=$FILE_URI
else
ATTACHMENT=$ATTACHMENT,$FILE_URI
fi
# On enregistre la liste provisoire des fichiers
echo $ATTACHMENT > /tmp/attachment.log
# Et on passe au fichier suivant ...
shift
done) | zenity --progress --auto-close --title="Préparation" --text="Traitement en cours ..." --percentage=0
# On recupere la liste des fichiers et on rajoute des quotes autour
ATTACHMENT=`cat /tmp/attachment.log`
ATTACHMENT=\'$ATTACHMENT\'
# On teste si Thunderbird est lance pour choisir
# la bonne façon de joindre les fichiers
MOZ_ON=`ps -ec | grep -c mozilla-thunder`
if [ $MOZ_ON != 0 ]; then
thunderbird -remote "xfeDoCommand(composeMessage,attachment=$ATTACHMENT)"
else
thunderbird -compose "attachment=$ATTACHMENT"
fi
En utilisant l'outil "[url=apt://nautilus-actions-config-tool]apt:nautilus-actions-config-tool[/url]" on peut ajouter un menu contextuel "Envoyer par email..." dans Nautilus.
C'est plus direct et plus pratique que de passer par -> scripts -> envoyer à
Les paramètres dans "Nautilus Actions config Tool" sont comme suit:
ONGLET COMMAND
PATH: /where-ever-is-the-script/thunderbird-send-files
PARAMETERS: %U
ONGLET EXECUTION
EXECUTION MODE: normal
Le reste par défaut.
En plus, on peut supprimer le programme sendto de nautilus devenu inutile:
sudo apt-get remove nautilus-sendto
Enjoy!!
jOoL