La première version du script de ce post qui permet d’envoyer des fichiers et des images par email en utilisant Thunderbird directement depuis Nautilus 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: zenity et imagemagick


#!/bin/bash
# Creation le    : 19/10/2005 par eddy http://forum.ubuntu-fr.org/profile.php?id=1142
# 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 « apt:nautilus-actions-config-tool » 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

Tags:

Classé sous: Ubuntu

Tu aimes cet article? Suis le feed RSS et reçois en plein d'autres!