#1 Le 21/10/2005, à 13:12
- eddy
Envoyer des fichiers/images via Thunderbird depuis Nautilus
Bonjour.
Une chose qui personnellement me manquait beaucoup depuis que j'ai quitté Windows est de pouvoir attacher des fichiers (réduits si ce sont des jpg) à un mail et les envoyer avec mon mailer habituel Thunderbird directement depuis mon navigateur de fichier usuel Nautilus (qui dispose de cette fonction mais uniquement via Evolution). J'ai cherché sur le forum, j'ai trouvé des scripts ici (d'un auteur inconnu) et là (mathieu vilaplana). J'ai pris alors mon courage à deux mains et fait un mix de tout ça à ma sauce personnelle. Je vous livre le résultat qui en principe répond aux caractéristiques suivantes :
- permet d'attacher des fichiers et/ou des images par clic droit sur une sélection de fichiers (propose le redimensionnement s'il y a des images);
- fonctionne avec des noms de fichiers/répertoires un peu bizarres (pas trop quand même), pas de problème avec les espaces en particulier;
- pas de problème non plus pour des envois depuis le bureau;
- fonctionne que Thunderbird soit lancé ou non.
Si ce script vous est utile en quelque chose, n'hésitez pas à le dire ici ça me fera plaisir
Installation
1. Taper dans un terminal :
gedit ~/.gnome2/nautilus-scripts/"Envoyer par mail"
2. Coller le script suivant :
#!/bin/bash
# Date : 19/10/2005
#
# 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
/usr/lib/mozilla-thunderbird/mozilla-thunderbird-xremote-client "xfeDoCommand(composeMessage,attachment=$ATTACHMENT)"
else
mozilla-thunderbird -compose "attachment=$ATTACHMENT"
fi
3. Sauver puis rendre le fichier exécutable :
chmod +x ~/.gnome2/nautilus-scripts/"Envoyer par mail"
Utilisation
Sélectionner des fichiers, clic droit puis Scripts > Envoyer par mail.
Màj : version pour Ubuntu 6.04 Dapper Drake
La version précédente du script ne marche pas avec Thunderbird 1.5. Utiliser alors celle-ci :
#!/bin/bash
# Author : Eddy
# Date : 2006/03/09
#
# Warning : thunderbird version >= 1.5, zenity and imagemagick packages must be installed
#
# Default language = English
_warning_title="Warning"
_warning_text="Please select at least one file !"
_progress_title="Preparing"
_progress_first_text="Processing ..."
_progress_text="Processing file"
_prompt_title="Scale image(s) ..."
_prompt_text="Choose the desired definition
(or Cancel to send pictures unmodified)"
_prompt_column_title="Size"
case $LANG in
# If language = French
fr* )
_warning_title="Attention"
_warning_text="Il faut sélectionner au moins un fichier !"
_progress_title="Préparation"
_progress_first_text="Traitement en cours ..."
_progress_text="Traitement du fichier"
_prompt_title="Redimensionner l'(es) image(s) ..."
_prompt_text="Choisir une définition maximum ci-dessous
(ou cliquer sur Annuler pour envoyer les images sans modification)"
_prompt_column_title="Taille"
esac
# First we make sure there's something selected.
if [ $# -eq 0 ]; then
zenity --warning --title="$_warning_title" --text="$_warning_text"
exit 1
fi
# Store the number of files to process.
NB_FILES=$#
# Reset the attachment list.
echo "" > /tmp/attachment.log
(while [ $# -gt 0 ];
do
# Store the file name and uri.
FILE_NAME="$1"
FILE_URI="$NAUTILUS_SCRIPT_CURRENT_URI/$FILE_NAME"
let "COMPTEUR += 1"
echo "# $_progress_text $FILE_NAME ($COMPTEUR/$NB_FILES) ..."
let "PROGRESS = COMPTEUR*100/NB_FILES"
echo $PROGRESS
# Test if the file is a picture.
# The following line may not work if the file is on the desktop ...
# IS_IMAGE=`file -bi "$FILE_NAME" | grep -c image`
# so we do differently.
# Here we reduce only jpeg files.
# If we wanted to reduce other types of picture file then we could do something like that :
# 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
# If the file is an image, prompt for reducing it.
if [ ! $DEF_ASKED ]; then
# Wait a little so that the window does not appear under the progress window ...
sleep 2
DEF=`zenity --list --title "$_prompt_title" --text="$_prompt_text" --radiolist --column "" --column $_prompt_column_title 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
# Build a reduced copy of the file in the trash.
# The following line may not work if the file is on the desktop.
# convert "$FILE_NAME" -resize $DEF "$HOME/.Trash/$FILE_NAME"
# so we do something quite more complicated ...
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"
# Store the reduced file uri in place of the file uri.
FILE_URI="file://$HOME/.Trash/$FILE_NAME"
fi
fi
# Add the file uri to the list.
if [ "$ATTACHMENT" == "" ]; then
ATTACHMENT=$FILE_URI
else
ATTACHMENT=$ATTACHMENT,$FILE_URI
fi
# Store the attachement list into a text file
echo $ATTACHMENT > /tmp/attachment.log
# And continue with the next file ...
shift
done) | zenity --progress --auto-close --title="$_progress_title" --text="$_progress_first_text" --percentage=0
# Quotes are required for the attachment list
ATTACHMENT=`cat /tmp/attachment.log`
ATTACHMENT=\'$ATTACHMENT\'
# Test if Thunderbird is running to make properly the attachment.
MOZ_ON=`ps -ec | grep -c mozilla-thunder`
if [ $MOZ_ON != 0 ]; then
/usr/lib/mozilla-thunderbird/mozilla-xremote-client -a mozilla-thunderbird "xfeDoCommand(composeMessage,attachment=$ATTACHMENT)"
else
# Unfortunately this line doesn't work anymore with thunderbird version >= 1.5
#mozilla-thunderbird -compose "attachment=$ATTACHMENT"
mozilla-thunderbird &
sleep 3
/usr/lib/mozilla-thunderbird/mozilla-xremote-client -a mozilla-thunderbird "xfeDoCommand(composeMessage,attachment=$ATTACHMENT)"
fi
Dernière modification par eddy (Le 01/04/2006, à 13:07)
Hors ligne
#2 Le 21/10/2005, à 17:11
- TheLiar
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Je viens de tester ton astuce.....et ça marche bien!
Si tu en as d'autres de cette qualité, n'hésite pas!
Hors ligne
#3 Le 21/10/2005, à 20:12
- Lootux
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
mais il est d'enfer ce script faudrait peut etre en parler a Keyes pour le mettre dans easyubuntu
Hors ligne
#4 Le 24/10/2005, à 17:14
- Le dorat
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Merci excellentissime:D
" L'homme arrive novice à chaque âge de la vie. "
Chamfort
Hors ligne
#5 Le 24/10/2005, à 17:18
- fsail
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Merci vraiment excellente comme astuce
Hors ligne
#6 Le 01/11/2005, à 23:54
- LjAm
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Merci! C'est nickel!
Y'en a pas d'autres des comme ça? :P
Hors ligne
#7 Le 02/11/2005, à 08:12
- jd
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Excellent
Sympa, les commentaires du source !
Hors ligne
#8 Le 04/11/2005, à 00:00
- nerve
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Fonctionne parfaitement !
merci pour cette astuce bien pratique
Staff TvFreeplayer
http://www.tvfreeplayer.com/
------------------------
Maintener des dépots linux
Hors ligne
#9 Le 04/11/2005, à 00:23
- sksbir
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
bravo pour la maitrise du scripting shell, on sent la sueur, et les soirées à tester ça dans tous les sens
Hors ligne
#10 Le 04/11/2005, à 09:05
- yeKcim
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Veux-tu que je mettes ton script sur http://g-scripts.sourceforge.net/ ?
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#11 Le 04/11/2005, à 09:20
- michel2652
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Bravo, joli travail, et merci pour ce super script
#12 Le 04/11/2005, à 17:08
- eddy
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Veux-tu que je mettes ton script sur http://g-scripts.sourceforge.net/ ?
Je n'ai rien contre, pas de problème.
Hors ligne
#13 Le 04/11/2005, à 21:03
- yeKcim
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Il ne manque qu'une fonction pratique : La compression si on sélectionne un dossier
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#14 Le 04/11/2005, à 21:08
- eddy
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Il ne manque qu'une fonction pratique : La compression si on sélectionne un dossier
Exact ! Ca manque. Faudra que j'ajoute ça (quand j'aurai le temps, et en ce moment j'en manque ...).
Hors ligne
#15 Le 05/11/2005, à 18:24
- elsoso
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
ça ne marche pas
pourtant ce n'est pas très compliqué comme opération !
Hors ligne
#16 Le 05/11/2005, à 19:28
- yeKcim
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
elsoso > Qu'est ce qui ne marche pas ? As-tu installé les dépendances ?
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#17 Le 09/11/2005, à 16:29
- elsoso
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
tout bêtement je l'avais installé dans /root et pas /home/guillaume ! quelle nouille !
Hors ligne
#18 Le 17/11/2005, à 14:32
- Gou
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
ça marche nickel! merci beaucoup pour l'astuce!
"Un clavier azerty en vaut deux..."
Ubuntu Dapper Drake sur un portable Sony Vaio SZ1M/B
mon blog
Hors ligne
#19 Le 14/12/2005, à 18:13
- concorde001
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Merci pour ce script ... marche à la perfection ... quoique : parfois je ne vois pas les pièces jointes dans l'email, elles sont comme invisibles : là qd on pointe dessus elles s'ouvrent, mais aucune 'écriture' ... chais pas si c'est très clair .... même une copie d'écran ne serait pas plus claire ... enfin bon c'est pas un pb majeur en soit ... cela vient peut-être des droits ...
Au fait, ton script fonctionne t'il sous KDE ou bien y a t'il n équivalent sous KDE ????
Merci
Dernière modification par concorde001 (Le 15/12/2005, à 14:33)
Hors ligne
#20 Le 09/02/2006, à 14:21
- TheLiar
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Bonjour
J'arrive bien à envoyer des fichiers avec ce script et des photos aussi, mais le script ne me propose pas le redimensionnement des photos.
Une petite idée?
Hors ligne
#21 Le 09/03/2006, à 14:10
- eddy
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Une petite idée?
Oui, peut-être que ce ne sont pas des jpeg ? Alors il faut éditer le script avec gedit par exemple et allez faire des petites modifs à cet endroit là :
# 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`
Hors ligne
#22 Le 09/03/2006, à 14:13
- yeKcim
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
J'avais oublié ce topic. Voici le lien vers le script sur le site gscripts : http://g-scripts.sourceforge.net/cat-filesysmgt.php
Il est le premier de la liste et s'appelle attachtoTBmail
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#23 Le 09/03/2006, à 14:57
- eddy
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Salut yekCim. Je viens de modifier le premier post du sujet pour y ajouter une nouvelle version du script qui soit compatible avec Thunderbird v.1.5 (et donc avec Dapper Drake). Si tu veux la publier à la place de l'autre sur g-scripts c'est ok. Merci !
Hors ligne
#24 Le 09/03/2006, à 16:54
- yeKcim
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
Je m'en charge ce soir
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#25 Le 09/03/2006, à 22:16
- Infinity
Re : Envoyer des fichiers/images via Thunderbird depuis Nautilus
mais strop bien
Merci beaucoup pour ce script !!!
Hors ligne