Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
nautilus_scripts [Le 11/06/2012, 22:13] – [Quelques explications] a_pirard | nautilus_scripts [Le 23/11/2020, 15:33] (Version actuelle) – [(recommandation obsolète) Ne pas utiliser les arguments passés aux scripts] 78.242.119.142 |
---|
| {{tag>Xenial nautilus}} |
| |
| ---- |
| |
| ====== Les scripts pour Nautilus ====== |
| |
| Le gestionnaire de fichiers Nautilus permet d'exécuter des [[tutoriel:script_shell|scripts]], sous la forme de fichiers textes. |
| Les scripts sont de "petits" programmes permettant une multitude de fonctionnalités. |
| |
| Les scripts suivants et d'autres trouvés sur le Web peuvent être copiés dans le répertoire de scripts de Nautilus. Certains s'exécutent avec les [[:sudo|privilèges utilisateur]] ce qui signifie que vous pouvez endommager gravement votre système. Agissez donc avec beaucoup de prudence quand le script vous demande le mot de passe pour modifier le système. |
| Beaucoup de scripts sont déjà présents dans les [[:depots|dépôts]] et peuvent être facilement installés par votre [[:gestionnaire_de_paquets|gestionnaire de paquets]]. Reportez-vous à la page de l'[[:nautilus_utilisation_avancee|utilisation avancée de nautilus]] pour voir la liste complète de ces scripts. |
| |
| ===== Installation ===== |
| Pour commencer, il vous faudra [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>nautilus-scripts-manager]]**. Ce paquet gère le dossier de scripts de Nautilus qui se trouve dans **~/.gnome2/nautilus-scripts** pour [[:Precise]] et également pour l'environnement de bureau [[:MATE]]. Et pour les autres versions il se trouve dans **~/.local/share/nautilus/scripts/**. Vous pouvez également mettre des scripts valables pour tous les utilisateurs dans **/usr/share/nautilus-script**. \\ |
| (Le répertoire **.local** est caché dans votre dossier personnel. Pour y accéder il faut préalablement afficher les fichiers cachés. Dans la barre des menus -> Affichage -> Afficher les fichiers cachés ou faites Ctrl + h). |
| Quand des scripts sont présents dans le dossier de scripts, il s'ouvre par clic-droit → Scripts → Ouvrir le dossier de scripts. |
| Tant qu'il n'y a pas de scripts dedans le raccourci n'est pas disponible. |
| |
| Placez-y vos scripts et [[:permissions|rendez-les exécutables]] en faisant un clic droit sur le script en question -> Propriétés -> onglet Permissions -> et cocher la case "Autoriser l’exécution du fichier comme un programme". Vous devriez nommer ces fichiers de façon à ce qu'ils évoquent quelque chose pour vous car c'est sous leurs noms qu'ils apparaîtront dans vos menus Nautilus. De plus vous n'avez pas besoin de rajouter l'extension **.sh** de scripts shell. Il est également possible de créer des dossiers pour mieux organiser les scripts. |
| Vos scripts seront alors disponibles dans toutes les fenêtres Nautilus dans //Fichier // -> Scripts, ainsi que dans le menu contextuel (clic droit). Vous ne verrez pas le menu //Fichier // tant que vous n'aurez pas ajouté votre premier script dans **~/.gnome2/nautilus-scripts** ou dans **~/.local/share/nautilus/scripts/**. |
| |
| Le chemin des scripts pour : |
| * Caja (Mate) est : **~/.config/caja/scripts**. |
| * Nautilus (Gnome/Unity) est : **~/.local/share/nautilus/scripts** |
| * Némo (Cinnamon) est : **~/.local/share/nemo/scripts/** |
| |
| Voir aussi: |
| * [[#Les pièges à éviter]], |
| * [[#Exemples]]. |
| |
| ===== Sélection de scripts ===== |
| |
| Vous avez déjà des scripts Nautilus sur la page [[:scripts utiles]]. |
| |
| Le script [[https://www.linux-apps.com/content/show.php/Script+Installer?content=67612|Script Installer]] permet d'installer automatiquement les scripts Nautilus. |
| |
| ==== Les scripts dans les dépôts Canonical ==== |
| |
| * [[apt>nautilus-script-collection-svn|Collection de scripts pour Subversion]] |
| * [[apt>nautilus-script-audio-convert|Conversion audio]] |
| |
| ==== Plusieurs scripts sélectionnés par un tiers ==== |
| |
| * **[[https://www.linux-apps.com/content/show.php/Nautilus+Scripts+Pack+Mini?content=85788|Nautilus Scripts Pack Mini]]** |
| * [[https://www.linux-apps.com/content/show.php/Nautilus+Scripts+Pack?content=90330|Nautilus Scripts Pack]] |
| * [[https://www.linux-apps.com/content/show.php/NScripts?content=67655|NScripts]] |
| * [[https://www.linux-apps.com/content/show.php/NScripts+Ultimate?content=68599|NScripts Ultimate]] |
| * [[https://www.linux-apps.com/content/show.php/Ultimate+Edition+Nautilus+Scripts+Pack?content=104451|Ultimate Edition Nautilus Scripts Pack]] |
| |
| ==== Web ==== |
| |
| * [[http://translate.google.com/translate?js=n&prev=_t&hl=fr&ie=UTF-8&layout=2&eotf=1&sl=en&tl=fr&u=http%3A%2F%2Fwww.omgubuntu.co.uk%2F2010%2F12%2Fshare-any-folder-on-the-web-in-10-seconds-using-ubuntu-and-one-script%2F|Script pour créer un serveur web a partir d'un répertoire]]. |
| |
| ==== Conversion de fichier ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533|Audio/Video/Image/Text/ISO Convert]] (nécessite au [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma|moins ça]], ou [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma,curl,links,kdegraphics,espeak,faac,faad2,antiword,unrtf,odt2txt,txt2tags,libavcodec-unstripped-52,AcetoneISO,nrg2iso,daa2iso,cdd2iso,uif|tout ça]]). |
| * [[https://www.linux-apps.com/content/show.php/avi+%26+mp4+converter?content=64899|avi & mp4 convertisseur.]] |
| * [[https://www.linux-apps.com/content/show.php/PDF+to+PNG?content=83110|PDF to PNG]] |
| * [[:pdftohtml|pdf to html]] |
| * [[timidity#script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]]) |
| |
| ==== Image ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Resize+Image?content=110541|Changer la taille des images.]] Resize Image |
| * Ajouter "Redimensionner les images..." dans le menu contextuel des images. [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>nautilus-image-converter]]** puis redémarrer la session. |
| |
| ==== Audio ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Enqueue+in+Audacious?content=80429|Enqueue in Audacious]] |
| * [[https://www.linux-apps.com/content/show.php/Extract+Audio?content=83072|Extraire l'audio de tout fichier multimedia]]. |
| * [[timidity#script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]]) |
| |
| ==== Gestion des fichiers ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Send+to...?content=67627|Envoyer vers - Send to...]] |
| * [[https://www.linux-apps.com/content/show.php/Encrypt%2BDecrypt+Files?content=74653|Encrypter/Decrypter les fichiers]] (nécessite gpg) |
| * [[https://www.linux-apps.com/content/show.php/Remove+Spaces?content=76200|Retirer les espaces des fichiers et dossiers (et les remplacer par underscore).Remove Spaces.]] |
| * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20System%20Management/envoiftp|Envoie de fichier par ftp]]. |
| * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20Processing/Misc/send_file_%20as_email_attachment_-_Thunderbird|Envoyer les fichiers en pièce-jointe de thunderbird]] |
| * [[http://soft.freem2.fr/2010/05/21/envoyer-des-fichiers-avec-thunderbird/|Envoyer les fichiers en pièce-jointe de thunderbird(amélioré)]] -lien mort- |
| * [[:dossiers_et_fichiers_caches#script_automatique|Masquer/afficher des fichiers]] |
| |
| ==== Administration ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Open+As+Root%28Working%29?content=76932|Ouvrir en tant que Root]] |
| * [[https://www.linux-apps.com/content/show.php/Make+MD5+sums?content=69749|Vérifier le MD5]]. |
| * [[https://www.linux-apps.com/content/show.php/Make%2BCheck+SFV?content=68362|Vérifier avec le SFV]]. |
| * [[https://www.linux-apps.com/content/show.php/Renamer?content=87601|Renommer les fichiers.]] Renamer. |
| * [[https://www.linux-apps.com/content/show.php/Terminal+Here?content=73250|Ouvrir un Terminal ici (répertoire actuel).Terminal Here.]] |
| * [[https://www.linux-apps.com/content/show.php/Open+Nautilus+as+Root?content=73610|Ouvrir Nautilus en root.]] |
| * [[https://www.linux-apps.com/content/show.php/Remove+~.~%2C.bak.old.OLD.BAK_curr_directo?content=73733|Nettoyer les ~.~,.bak.old.OLD.BAK_curr_directo]] |
| |
| ==== Développement ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Make+DEB+Package?content=79785|Faire un fichier deb]] ( plus facilement ). |
| * [[https://www.linux-apps.com/content/show.php/dot-tree?content=105395|Visualisation des dossiers en arbre.]] dot-tree |
| * [[http://www.schnuckelig.eu/story/resurection-nautilus-cvs-scripts|Le CVS depuis Nautilus - Nautilus CVS scripts]] |
| |
| ==== Internet ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/sendToImageshack?content=100952|Envoyer sur imageshack]]. |
| * [[http://forum.ubuntu-fr.org/viewtopic.php?pid=1424293#33|Envoyer sur dl.free.fr]] |
| * [[http://www.xorax.info/blog/news/200-script-dl-free-fr-automatique.html|script automatique pour télécharger sur dl.free.fr]] |
| * [[http://blog.anandkapre.com/2009/ubuntu/08-19-ubuntu-linux-rapidshare-right-click-uploader/|Rapidshare Multiple Uploader.]] ( [[http://www.ubuntu-inside.me/2009/08/one-click-multi-rapidshare-uploader.html|mirroir 1]], [[http://ubuntuforums.org/archive/index.php/t-974303.html|miroir 2]]) |
| * [[http://forum.ubuntu-fr.org/viewtopic.php?id=384599|Upload sur Megaupload (site fermé)]] |
| |
| ==== Divers ==== |
| |
| * [[https://www.linux-apps.com/content/show.php/Simple+alarm?content=111811|Lancer une Alarme à une heure donnée]] aussi [[http://forum.ubuntu-fr.org/viewtopic.php?pid=6755501#p6755501|ici]], |
| * [[http://gnome-look.org/content/show.php/Nautilus+Extension+Kill+Thumbs?content=92143|Supprimer automatiquement les fichiers Thumbs.db de vos répertoires]], |
| * [[https://www.linux-apps.com/content/show.php/Automated+Font+Installer?content=67610|Installation de police]], |
| * [[https://www.linux-apps.com/content/show.php/TTF+Font+Manager?content=82473|TTF Font Manager]], |
| * [[https://www.linux-apps.com/content/show.php/download_opensubtitle?content=68085|Télécharger les sous-titres sur download_opensubtitle]]. |
| |
| |
| ===== Les pièges à éviter ===== |
| |
| La première chose qu'un **script Nautilus** doit récupérer, c'est la liste des fichiers sur lesquels il doit opérer (les fichiers qui étaient sélectionnés par l'utilisateur lorsqu'il a lancé le script). Comme pour tout script, il faut pour cela rédiger correctement le script et éviter certaines erreurs. |
| |
| ==== Attention en utilisant les arguments passés aux scripts ==== |
| |
| **Nautilus** passe en argument les noms des fichiers sélectionnés. Par exemple, si vous êtes dans **/home/user**, et que vous appliquez le script sur **toto** et **titi**, $PWD et $NAUTILUS_SCRIPT_CURRENT_URI vaudront '/home/user', $1 vaudra 'toto' et $2 vaudra 'titi'. |
| |
| Premier problème, **Nautilus** offre une vue liste (qui pourrait d'ailleurs se nommer "arborescente"), on peut donc sélectionner des fichiers qui sont dans des sous-répertoires du répertoire courant. Dans ce cas "$PWD/$1" ne sera pas le bon chemin : [[http://bugzilla.gnome.org/show_bug.cgi?id=320215|bug 320215]]. Heureusement [[https://bugzilla.gnome.org/show_bug.cgi?id=320215 | CE BUG A ÉTÉ CORRIGÉ EN 2008]] |
| |
| Second problème, sur le Bureau par exemple, **Nautilus** ne passe aucun argument au script : [[http://bugzilla.gnome.org/show_bug.cgi?id=549910|bug 549910]]. |
| |
| Il **faut donc éviter** utiliser des scripts du genre : |
| |
| <code bash> |
| for arg |
| do |
| do_something "$arg" |
| done |
| </code> |
| |
| ou |
| |
| <code bash> |
| for arg in "$@" |
| do |
| do_something "$arg" |
| done |
| </code> |
| |
| Ces scripts ne marcheraient pas dans tous les cas. Normalement, ce problème est corrigé dans Gnome 2.23 (Ubuntu ≥ 8.10). |
| |
| Mais, même une fois corrigé, la méthode suivante devrait poser moins de problèmes (car on obtient directement la liste des chemins complets des fichiers). |
| |
| Heureusement, **Nautilus** fournit une variable $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS, qui contient la liste des chemins complets des fichiers sélectionnés, séparés par '\n' (retour à la ligne). |
| C'est donc cette variable qu'il faut utiliser. Par exemple : |
| <code bash> |
| #!/bin/bash |
| |
| function faireQqChose () { |
| zenity --info --text "le fichier est $@" |
| } |
| |
| IFS=$'\n' # on limite le IFS aux sauts de ligne |
| faireQqChose $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| |
| exit 0 |
| </code> |
| |
| <note help> |
| Dans certains cas, les chemins peuvent être séparés par une espace et pas par un retour à la ligne. |
| Si un lecteur a des précisions, merci de contacter la [[:wiki:liste_discussion|liste de discussion de la documentation]]. |
| </note> |
| |
| ==== Itérer sur les fichiers ==== |
| |
| Le problème, c'est que des fichiers peuvent contenir des espaces, et aussi des \n (un '\' suivi d'un 'n'), et que certaines solutions ne sont pas correctes à cause de ces cas particuliers. |
| |
| Par exemple : |
| |
| <code bash> |
| for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| do |
| do_something "$arg" |
| done |
| </code> |
| |
| **n'est pas correct**, car si les chemins sont '/tmp/a b/c' et '/tmp/d e', la boucle fera 4 itérations : '/tmp/a', 'b/c', '/tmp/d' et 'e'. |
| |
| Une première solution est de faire : |
| |
| <code bash> |
| printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | |
| while read -r arg |
| do |
| do_something "$arg" |
| done |
| </code> |
| |
| Il ne faut pas utiliser **echo** (en **sh**, il ne fonctionnerait pas sur un fichier contenant un '\' suivi d'un 'n'), et il faut bien passer l'argument **-r** à **read** (même raison). |
| |
| Une seconde solution est de changer l'[[http://www.livefirelabs.com/unix_tip_trick_shell_script/oct_2003/10132003.htm|IFS]] : |
| |
| <code bash> |
| IFS=' |
| ' |
| for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| do |
| do_something "$arg" |
| done |
| </code> |
| |
| Ainsi, chaque argument sera une ligne de $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS. |
| |
| On peut aussi vouloir passer tous les arguments à un autre script (sans itérer) : |
| |
| <code bash> |
| IFS=' |
| ' |
| do_something $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| </code> |
| |
| Si vous respectez ceci, votre script fonctionnera aussi bien en **/bin/bash** qu'en **/bin/sh** (du moins pour cette partie) et pour tous les fichiers, mêmes les cas particuliers. |
| |
| Après divers test voici une solution qui fonctionne même si le nom de fichier ou dossier contient des espaces, virgules ou autres caractères spéciaux : |
| utiliser la commande **find** ! |
| par exemple pour une opération sur des fichiers mp3 : |
| |
| <code bash> |
| #!/bin/bash |
| IFS=' |
| ' |
| printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | |
| while read -r arg |
| do |
| find "$arg" -depth -iname "*.mp3" -exec votre_commande {} \; |
| done |
| </code> |
| |
| Le *.mp3 va prendre en compte les fichier mp3 contenus dans votre sélection et le {} remplace le nom de fichier dans votre commande à appliquer sur les mp3. |
| |
| ===== Exemples ===== |
| |
| ==== Supprimer les fichiers de sauvegarde de Gedit ==== |
| Gedit copie chaque fichier avant la sauvegarde sous le nom « $fichier~ ». Il suffira d'appliquer le script d'un //clic droit -> Scripts -> rm-backups.sh// : |
| |
| <code bash> |
| #! /bin/bash |
| |
| rm ./*~ |
| zenity --info --text="Fichiers de backup *~ supprimés :)" |
| </code> |
| |
| <note tip> On peut désactiver la création de fichier de sauvegarde par Gedit en décochant la case "Créer une copie de sauvegarde des fichiers avant l’enregistrement" dans **Édition -> Préférences -> Éditeur**.</note> |
| |
| |
| |
| ==== Ouvrir en tant qu'administrateur ==== |
| |
| === Éditer un fichier avec Gedit avec les privilèges ROOT === |
| |
| <code bash> |
| #!/bin/bash |
| gksudo -u root -k -D "Éditer les fichiers sous root" gedit "$@" |
| </code> |
| |
| === Ouvrir Nautilus dans le répertoire choisi avec les privilèges « root » === |
| |
| <code bash> |
| #!/bin/bash |
| # root-nautilus-here |
| # Ouvrir Nautilus dans le répertoire choisi avec les privilèges ROOT |
| # nécessite des privilèges sudo et gksudo, ce qui peut entrainer des risques de sécurités |
| #Installez le dans votre répertoire ~/Nautilus/scripts. |
| # |
| # Placé dans le domaine public par Shane T. Mueller 2001 |
| # correctifs fournis par Doug Nordwall |
| # |
| # 2004.04.18 -- keith@penguingurus.com - Ajout de l'utilisation de gksudo |
| # afin de lancer une fenetre de mot de passe si sudo a expire. |
| # Les echos sont renvoyés |
| # vers la sortie standard de root. Mais gksudo |
| # met à jour votre acces sudo |
| # donc le lancement de Nautilus avec sudo fonctionnera sans |
| # demander de mot de passe |
| |
| |
| foo=`gksudo -u root -k -m\ |
| "entrez votre mot de passe afin de lancer Nautilus en tant que root"\ |
| /bin/echo "got r00t?"` |
| sudo nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI |
| |
| </code> |
| |
| |
| === Exécuter les fichiers en tant que ROOT === |
| |
| <code bash> |
| #!/bin/bash |
| for i |
| do |
| gksudo -u root -k "$i" |
| done |
| </code> |
| |
| |
| ==== Ouvrir un terminal ici ==== |
| |
| **Nautilus Open Terminal** permet d'ouvrir un terminal directement dans le répertoire courant de Nautilus //via// un clic droit → //Ouvrir dans un terminal//. |
| |
| Pour l'utiliser, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>nautilus-open-terminal]]** et ensuite de redémarrer la session. |
| |
| ==== Lire les fichiers du répertoire avec Rhythmbox ==== |
| |
| Permet d'envoyer tous les fichiers du répertoire dans la liste de lecture de [[:Rhythmbox]] : |
| |
| <code bash> |
| #!/bin/sh |
| base="$(echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g')" |
| |
| if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then |
| dir="$base" |
| else |
| while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done |
| dir="$base/$1" |
| fi |
| |
| if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "x-nautilus-desktop:///" ]; then |
| dir="Desktop" |
| fi |
| |
| if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "trash:" ]; then |
| dir="$HOME/.Trash" |
| fi |
| |
| if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "file:///" ]; then |
| dir="/" |
| fi |
| |
| FIRST_URI="`echo -n $NAUTILUS_SCRIPT_SELECTED_URIS`" |
| if [ "$FIRST_URI" == "x-nautilus-desktop:///home" ]; then |
| dir="$HOME" |
| fi |
| |
| if [ "$FIRST_URI" == "x-nautilus-desktop:///computer" ]; then |
| dir="/" |
| fi |
| rhythmbox "$dir" |
| </code> |
| |
| ==== Envoyer par mail des images compressées petites avec Thunderbird ==== |
| |
| <code bash> |
| #!/bin/sh |
| IFS=' |
| ' |
| notify-send "Patientez..." |
| # astuce pour prendre en compte les espaces des dossiers et fichiers |
| printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | |
| emailattachment="" # initialisation de la variable à cause du for |
| for fullfile in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| do |
| filename="${fullfile##*/}" # isoler le nom de la photo |
| convert "$filename" -resize 640 -quality 60% /tmp/"$filename" # compression de la photo |
| emailattachment="$emailattachment/tmp/$filename," # collecte des photos |
| sleep 500ms |
| done |
| fichiersjoints=${emailattachment%?} # enlever la virgule à la fin |
| thunderbird -compose attachment="'$fichiersjoints'" # créer l'email avec les photos jointes |
| |
| exit 0 |
| </code> |
| =====Voir aussi===== |
| * [[http://askubuntu.com/questions/281062/how-to-get-nautilus-scripts-working-on-ubuntu-13-04|Question concernant les scripts Nautilus]], |
| * [[https://wiki.ubuntu.com/NautilusScriptsHowto|traduction]] |
| * **[[https://www.linux-apps.com/browse/cat/126/order/latest|Scripts pour Nautilus sur gtk-apps.org]]** |
| * [[http://g-scripts.sourceforge.net/|Site officiel de nautilus script, avec quelques scripts]] |
| ---- |
| |
| //Contributeurs : [[utilisateurs:FredB]], [[utilisateurs:l_africain|L'Africain]] [[utilisateurs:Fabien26]] (1<sup>re</sup> actualisation), [[:utilisateurs:ner0lph|Floriang]] (2<sup>e</sup> actualisation).// |