Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
nautilus_scripts [Le 11/06/2012, 21:38]
a_pirard [Les scripts pour Nautilus]
nautilus_scripts [Le 17/01/2024, 11:40] (Version actuelle)
arverne73 orthographe
Ligne 1: Ligne 1:
-{{tag>Dapper Feisty ​nautilus}}+{{tag>Jammy nautilus}}
  
 ---- ----
Ligne 5: Ligne 5:
 ====== Les scripts pour Nautilus ====== ====== Les scripts pour Nautilus ======
  
-Le gestionnaire de fichiers Nautilus permet d'​exécuter des [[tutoriel:​script_shell|scripts]], ​programmes pouvant modifer ou se servir des fichiers ​sélectionné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 de ces scripts s'​exécutent avec les privilèges de l'​utilisateur ''​root''​ 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.+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.
  
-===== Liens =====+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.
  
-  * **[[http://www.gtk-apps.org/index.php?​xcontentmode=188&​PHPSESSID=9e0f49b3a15f120a1ed0ad1919a29f99|Scripts pour Nautilus sur gtk-apps.org]]** +===== Installation ===== 
-  * [[http://g-scripts.sourceforge.net/|Site officiel de nautilus ​script, avec quelques ​scripts]] ​+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 se trouvant dans **~/.local/share/​nautilus/​scripts/​** pour l'​environnement de bureau GNOMEVous 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 **~/​.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 ===== ===== Sélection de scripts =====
  
-Voir les scripts Nautilus ​présent dans [[:ubuntu_tweak#​installer_des_scripts_nautilus|Ubuntu Tweak]], ainsi que les [[scripts utiles]].+Vous avez déjà des scripts Nautilus ​sur la page [[:scripts utiles]].
  
-Le script [[http://www.gtk-apps.org/​content/​show.php/​Script+Installer?​content=67612|Script Installer]] permet d'​installer automatiquement les scripts Nautilus.+Le script [[https://www.linux-apps.com/​content/​show.php/​Script+Installer?​content=67612|Script Installer]] permet d'​installer automatiquement les scripts Nautilus.(dernière maj en 2008, il doit être obsolète ?).
  
 ==== Les scripts dans les dépôts Canonical ==== ==== Les scripts dans les dépôts Canonical ====
Ligne 25: Ligne 42:
 ==== Plusieurs scripts sélectionnés par un tiers ==== ==== Plusieurs scripts sélectionnés par un tiers ====
  
-  ​* **[[http://www.gtk-apps.org/​content/​show.php/​Nautilus+Scripts+Pack+Mini?​content=85788|Nautilus Scripts Pack Mini]]** +  * [[https://www.linux-apps.com/​content/​show.php/​Nautilus+Scripts+Pack+Mini?​content=85788|Nautilus Scripts Pack Mini]] 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Nautilus+Scripts+Pack?​content=90330|Nautilus Scripts Pack]] +  * [[https://www.linux-apps.com/​content/​show.php/​Nautilus+Scripts+Pack?​content=90330|Nautilus Scripts Pack]] 
-  * [[http://​www.gtk-apps.org/​content/​show.php/​NScripts?​content=67655|NScripts]] +  * [[https://www.linux-apps.com/​content/​show.php/​NScripts+Ultimate?​content=68599|NScripts Ultimate]] 
-  * [[http://www.gtk-apps.org/​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]]
-  * [[http://www.gtk-apps.org/​content/​show.php/​Ultimate+Edition+Nautilus+Scripts+Pack?​content=104451|Ultimate Edition Nautilus Scripts Pack]]+
  
 ==== Web ==== ==== Web ====
Ligne 37: Ligne 53:
 ==== Conversion de fichier ==== ==== Conversion de fichier ====
  
-  * [[http://www.gtk-apps.org/​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/​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]]). 
-  * [[http://www.gtk-apps.org/​content/​show.php/​avi+%26+mp4+converter?​content=64899|avi & mp4 convertisseur.]] +  * [[https://www.linux-apps.com/​content/​show.php/​avi+%26+mp4+converter?​content=64899|avi & mp4 convertisseur.]] 
-  * [[http://www.gtk-apps.org/​content/​show.php/​PDF+to+PNG?​content=83110|PDF to PNG]] +  * [[https://www.linux-apps.com/​content/​show.php/​PDF+to+PNG?​content=83110|PDF to PNG]] //script non disponible sur ce lien// 
-  * [[pdftohtml|pdf to html]] +  * [[: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 ==== ==== Image ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Resize+Image?​content=110541|Changer ​la taille des images.]] ​Resize Image+  * [[http://benn.org/​software/​nautilus-resize-image/​|Retailler image]] (Resize-Image) :​ Script datant de 2009 mais toujours fonctionnel et très efficaceDescriptif d'​installation à lire mais qui doit être un peu aménagé : le répertoire proposé pour l'​enregistrement du script ~/.gnome2n'​existe plus mais peut être remplacé par n'​importe quel répertoire personnelPour chaque taille d'​image,​ il faut créer un lien vers ce script. 
 + 
 +Dans un terminal, aller dans le répertoire ~/.local/​share/​nautilus/​scripts/​ (facilement,​ taper ''​cd+espace''​ puis tirer ce dossier scripts sur le terminal puis la touche '​Entrée'​). Taper alors, par exemple, la commande suivante pour la taille ​600 pixels : <​code>​ln -s ~/chemin d'​enregistrement script/​ResizeImage.sh "​Retailler image (600px)"</​code>​ 
 +(Comme pour la commande précédente,​ après ''​ln -s '',​ il suffit de tirer le script //​ResizeImage//​ sur le terminal pour que le chemin s'​inscrive automatiquement). 
 + 
 +Faire de même pour toutes les autres tailles prévues dans le script. 
 + 
 +  * 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 ==== ==== Audio ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​Enqueue+in+Audacious?​content=80429|Enqueue in Audacious]] +  * [[https://www.linux-apps.com/​content/​show.php/​Enqueue+in+Audacious?​content=80429|Enqueue in Audacious]] 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Extract+Audio?​content=83072|Extraire l'​audio de tout fichier multimedia]].+  * [[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 ==== ==== Gestion des fichiers ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​Send+to...?​content=67627|Envoyer vers - Send to...]] +  * [[https://www.linux-apps.com/​content/​show.php/​Send+to...?​content=67627|Envoyer vers - Send to...]] ​//script non disponible sur ce lien// 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Encrypt%2BDecrypt+Files?​content=74653|Encrypter/​Decrypter les fichiers]] (nécessite gpg) +  * [[https://www.linux-apps.com/​content/​show.php/​Encrypt%2BDecrypt+Files?​content=74653|Encrypter/​Decrypter les fichiers]] (nécessite gpg) 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Remove+Spaces?​content=76200|Retirer les espaces des fichiers et dossiers (et les remplacer par underscore).Remove Spaces.]] +  * [[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%20System%20Management/​envoiftp|Envoyer des fichiers ​par ftp]]. 
-  * [[http://​g-scripts.sourceforge.net/​nautilus-scripts/​File%20Processing/​Misc/​send_file_%20as_email_attachment_-_Thunderbird|Envoyer les fichiers en piece jointe de thunderbird]] +  * [[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 piece jointe de thunderbird(amélioré)]]+
   * [[:​dossiers_et_fichiers_caches#​script_automatique|Masquer/​afficher des fichiers]]   * [[:​dossiers_et_fichiers_caches#​script_automatique|Masquer/​afficher des fichiers]]
  
 ==== Administration ==== ==== Administration ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​Open+As+Root%28Working%29?​content=76932|Ouvrir en tant que Root]] +  * [[https://www.linux-apps.com/​content/​show.php/​Open+As+Root%28Working%29?​content=76932|Ouvrir en tant que Root]] 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Make+MD5+sums?​content=69749|Vérifier le MD5]]. +  * [[https://www.linux-apps.com/​content/​show.php/​Make+MD5+sums?​content=69749|Vérifier le MD5]]. 
-  * [[http://www.gtk-apps.org/​content/​show.php/​Make%2BCheck+SFV?​content=68362|Vérifier avec le SFV]]. +  * [[https://www.linux-apps.com/​content/​show.php/​Make%2BCheck+SFV?​content=68362|Vérifier avec le SFV]]. 
-  * [[http://www.gtk-apps.org/​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]] 
-  * [[http://​www.gtk-apps.org/​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.]] 
-  * [[http://www.gtk-apps.org/​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]]
-  * [[http://www.gtk-apps.org/​content/​show.php/​Remove+~.~%2C.bak.old.OLD.BAK_curr_directo?​content=73733|Nettoyer les ~.~,​.bak.old.OLD.BAK_curr_directo]]+
  
 ==== Développement ==== ==== Développement ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​Make+DEB+Package?​content=79785|Faire un fichier deb]] ( plus facilement ). +  * [[https://www.linux-apps.com/​content/​show.php/​Make+DEB+Package?​content=79785|Faire un fichier deb]] ( plus facilement ). 
-  * [[http://www.gtk-apps.org/​content/​show.php/​dot-tree?​content=105395|Visualisation des dossiers en arbre.]] dot-tree +  * [[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 ==== ==== Internet ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​sendToImageshack?​content=100952|Envoyer sur imageshack]]. +  * [[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://​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://​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]]) 
-  * [[<​del>​http://​forum.ubuntu-fr.org/​viewtopic.php?​id=384599|Upload sur Megaupload (site fermé)]] 
  
 ==== Divers ==== ==== Divers ====
  
-  * [[http://www.gtk-apps.org/​content/​show.php/​Simple+alarm?​content=111811|Lancer une Alarme à une heure donnée]]http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=6755501#​p6755501 +  * [[https://www.linux-apps.com/​content/​show.php/​download_opensubtitle?​content=68085|Télécharger les sous-titres ​sur download_opensubtitle]].
-  * [[http://​gnome-look.org/​content/​show.php/​Nautilus+Extension+Kill+Thumbs?​content=92143|Supprimer automatiquement les fichiers Thumbs.db de vos répertoires]] +
-  * [[http://​www.gtk-apps.org/​content/​show.php/​Automated+Font+Installer?​content=67610|Installation de police.]] +
-  * [[http://​www.gtk-apps.org/​content/​show.php/​TTF+Font+Manager?​content=82473|TTF Font Manager]] +
-  * [[http://​www.gtk-apps.org/​content/​show.php/​download_opensubtitle?​content=68085|Télécharger les sous-titresdownload_opensubtitle]] +
-  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=6755501#​p6755501|Créer un lanceur sous Oneiric]]+
  
-==== Ubuntu One ====+===== Créer un script ​===== 
 +Il vous suffit d'un [[editeur_de_texte|éditeur de texte]] pour écrire votre script.
  
-Envoyer vers [[ubuntuone|Ubuntu One]] :+Pour créer un script il faut être familier avec un langage de script : la façon la plus simple et répandue est avec [[:Bash]]
 +Les langages [[:python]] et [[:Perl]] son parfois utilisés.
  
-<code bash> +Chaque fois qu'un script est appelé, Nautilus définit automatiquement des variables qui peuvent être utilisées dans vos scripts. 
-#!/bin/bash+  - ''​NAUTILUS_SCRIPT_SELECTED_FILE_PATHS''​\\ Chemins des fichiers délimités par un espace.\\  
 +  - ''​NAUTILUS_SCRIPT_SELECTED_URIS''​\\ URI délimitées par un espace.\\  
 +  - ''​NAUTILUS_SCRIPT_CURRENT_URI''​\\ L'URI où il y a eu la séléction.\\  
 +  - ''​NAUTILUS_SCRIPT_WINDOW_GEOMETRY''​\\ Position et taille de la fenêtre Nautilus au format **largeurxhauteur+pos_horizontale+pos_vertical**.\\ ​
  
-cp -r $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ~/Ubuntu\ One/ +<note help
-</code+Dans certains casles 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]]
-===== Quelques explications ===== +</note>
- +
-Le répertoire de scripts de Nautilus est **~/​.gnome2/​nautilus-scripts**. \\ +
-Il s'​ouvre,​ s'il existe, par clic-droit ou File → Script → Ouvrir le dossier Script +
- +
-Placez vos scripts là et rendez-les exécutables (''​chmod +x {nom du script}''​). Vous devriez nommer ces fichiers de façon ​à ce qu'ils évoquent quelque chose pour vous car c'est sous leur nom qu'ils apparaîtront dans vos menus NautilusDe plus vous n'avez pas besoin ​de rajouter l'​extension **.sh** de scripts shell (Note du traducteur ​dans le monde Unix/Linux les extensions des noms de fichier n'ont aucune importance, c'​est ​la première ligne #! qui compte). 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 // 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 ».+
  
-<​del>​Attention : veillez à nommer ​le fichier du script en commençant par une **majuscule**, sinon ça ne fonctionnera pas ! Exemple : « Imprimer »Contre-exemple : « imprimer ».</​del>​+Il existe des outils d'​analyse de scripts pour savoir s'il respecte les bonnes pratiques. Pour le langage bash il existe 
 +**[[apt>​shellcheck]]**.
  
 ===== Les pièges à éviter ===== ===== 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). ​Malheureusementc'est loin d'​être quelque chose de trivial. +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 scriptil faut pour cela rédiger correctement le script et éviter certaines erreurs.
-En effet, à cause soit de bugs, soit d'​interprétation du shell, plusieurs choses sont à ne pas utiliser.+
  
-==== Ne pas utiliser ​les arguments passés aux scripts ====+==== 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'​.+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''​ vaudra '/​home/​user' ​et ''​$NAUTILUS_SCRIPT_CURRENT_URI'​' vaudra '​file:​%%///%%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=549816|bug 549816]].+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.
  
-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 proscrire** d'utiliser des scripts du genre :
- +
-Il **ne faut donc pas** utiliser des scripts du genre :+
  
 <code bash> <code bash>
 for arg for arg
 do do
-  do_something ​"$arg"+  do_something $arg
 done done
 </​code>​ </​code>​
- 
 ou ou
- 
 <code bash> <code bash>
-for arg in "$@"+for arg in $@
 do do
   do_something "​$arg"​   do_something "​$arg"​
Ligne 146: Ligne 155:
 </​code>​ </​code>​
  
-Ces scripts ne marcheraient pas dans tous les cas. Normalementce problème ​est corrigé dans Gnome 2.23 (Ubuntu ≥ 8.10).+**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 utiliserPar exemple : 
 +<code bash> 
 +#​!/​bin/​bash 
 +function afficherFichier ​() {  
 + zenity --info --text "le fichier est $*"  
 +}
  
-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). +IFS=$'​\n' ​# on limite le IFS aux sauts de ligne 
- +afficherFichier "​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​ 
-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). +</code>
-C'est donc cette variable qu'il faut utiliser. +
- +
-<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 ==== ==== 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. 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.
  
Ligne 171: Ligne 179:
 </​code>​ </​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'​. +**n'​est pas correct ​sans les guillemets aux variables**, 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 :+
  
 +La même solution d'une autre manière :
 <code bash> <code bash>
 printf %s "​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​ | printf %s "​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​ |
Ligne 184: Ligne 191:
  
 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). 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'[[wp>​Input_Field_Separators|IFS]] :
-Une seconde solution est de changer l'[[http://​www.livefirelabs.com/​unix_tip_trick_shell_script/​oct_2003/​10132003.htm|IFS]] :+
  
 <code bash> <code bash>
Ligne 196: Ligne 202:
 </​code>​ </​code>​
  
-Ainsi, chaque argument sera une ligne de $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS. +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) : On peut aussi vouloir passer tous les arguments à un autre script (sans itérer) :
  
Ligne 207: Ligne 212:
  
 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. 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 : 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** ! utiliser la commande **find** !
Ligne 226: Ligne 230:
  
 ===== Exemples ===== ===== Exemples =====
- 
-==== Envoyer par courriel ==== 
- 
-Il suffit d'​installer,​ si nécessaire,​ l'​extension **[[apt>​nautilus-sendto]]**. 
  
 ==== Supprimer les fichiers de sauvegarde de Gedit ==== ==== 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//​ :
-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> <code bash>
Ligne 242: Ligne 241:
 </​code>​ </​code>​
  
-==== Monter et démonter une image ISO ==== +<note tipOn 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>
- +
-=== Avec GMount-ISO === +
- +
-Un programme vous permet de monter des images ISO sans trop de mal : [[GMountISO]]. +
- +
-=== Le faire avec Nautilus ou versions antérieures === +
- +
-== Monter une image ISO == +
- +
-Monter une image ISO à partir de Nautilus. +
- +
-<code bash> +
-#​!/​bin/​bash +
-+
-# En chargeant le module loop on s'​assure ​de son chargement et qu'il est pret a etre utilise ​  +
-# Si il est déjà chargé il ne se passe rien. +
-lsmod | grep '^loop ' || gksudo -u root -k -m "Chargement du module noyau '​loop'"​ modprobe loop +
-for i in "​$@"​ +
-do +
- gksudo -u root -k -m "​Montage ​de l'image ISO" ​mount -o loop -t iso9660 "​$i"​ /​media/​iso +
-done +
-</code> +
- +
-== Démonter une image ISO == +
- +
-Démonter une image ISO à partir de Nautilus. +
- +
-<code bash> +
-#​!/​bin/​bash +
-+
-for i in "​$@"​ +
-do +
- gksudo -u root -k -m "​Démontage de l'​image ISO" umount "​$i"​ +
-done +
-</code> +
  
 ==== Ouvrir en tant qu'​administrateur ==== ==== Ouvrir en tant qu'​administrateur ====
  
-<note tip>Les 3 scripts suivants font exactement la même chose que le paquet [[apt>​nautilus-gksu]].</​note>​ +=== Éditer un fichier avec VIM avec les privilèges ROOT === 
- +<note warning>​**Extrêmement risqué, ne jouez pas avec**</​note>​
-=== Éditer un fichier avec Gedit avec les privilèges ROOT === +
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-gksudo -u root -k -D "Éditer les fichiers sous root" ​gedit "$@"+# C'est sérieux il ne faut pas jouer avec les droits ​root 
 +notify-send "si vous ne savez pas ce que vous faites, fermez la fenêtre"​ 
 +gnome-terminal -- pkexec --user ​root vim "$(realpath ​"$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​)"
 </​code>​ </​code>​
  
-=== Ouvrir Nautilus dans le répertoire ​choisi ​avec les privilèges « root » ​=== +==== 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/​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>​ +
- +
-==== Rechercher ici/dedans ==== +
- +
-Ouvrir une fenêtre de recherche dans le répertoire sélectionné ​:+
  
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
-    # De Johnathan Bailes 
-    # Ce script ouvre l'​outil de recherche gnome dans le répertoire que vous sélectionnez. 
-    # 
-    # Distribué selon les termes de GNU GPL version 2 ou ultérieur 
-    # 
-    # Installez le dans votre répertoire ~/​Nautilus/​scripts. 
-    # Vous devez utiliser Nautilus 1.0.3+ pour utiliser ce script. 
-    ​ 
-    cd $NAUTILUS_SCRIPT_CURRENT_URI 
-    exec gnome-search-tool 
-</​code>​ 
  
-Autre version, avec recherches multiples : +base="$(echo "​$NAUTILUS_SCRIPT_CURRENT_URI" ​| cut -d'/'​ -f3- | sed '​s/​%20/​ /g')"
- +
-<code bash> +
-#! /bin/sh +
- +
-   # Par gusaweb <gusaweb at gmail.com>​ +
- +
-   # Permet d'​utiliser l'​outil de recherche gnome +
-   # sur un/des répertoire(s) ou fichier(s) +
-   # sélectionné(s). +
- +
-   # Distribué selon les termes de la GNU GPL 2 +
-   # ou ultérieure +
- +
-   # pour chaque path sélectionné +
-   for path in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; +
-   do +
-      # s'il s'agit d'un répertoire on effectue +
-      # la recherche dedans +
-      if ( test -d $path ) +
-      then +
-         exec gnome-search-tool --path=$path & +
-      # s'il s'agit d'un fichier on effectue la +
-      # recherche sur le répertoire qui le contient +
-      else +
-         exec gnome-search-tool --path=`dirname $path` & +
-      fi ; +
-   ​done +
-</​code>​ +
- +
-Encore une autre version supportant : +
-  * les espaces dans les noms de fichiers ou de répertoires ; +
-  * l'​ouverture d'une seule fenêtre de recherche par répertoire ​(cas de la sélection de plusieurs fichiers dans le même répertoire). +
- +
-<code bash> +
-#​!/​bin/​bash +
- +
-# Search in folder +
-# Auteur: doc75 (inspiré du script de gusaweb) +
-# version: 0.1 +
-# date: 2009/​09/​20 +
- +
-IFS='​ +
-+
-tmpfile=/​tmp/​search-file.txt +
- +
-for selected_file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; +
-do +
- if [ -d ${selected_file} ] +
- then +
- echo ${selected_file} >> ${tmpfile} +
- else +
- echo `dirname ${selected_file}` >> ${tmpfile} +
- fi  +
-done +
- +
-for selected_dir in `cat ${tmpfile} | sort -u` +
-do +
- gnome-search-tool --path=${selected_dir} & +
-done +
- +
-rm ${tmpfile} +
-</​code>​ +
- +
- +
-==== Ouvrir un terminal ici ==== +
- +
-=== Via l'​extension « nautilus-open-terminal » === +
- +
-**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'​installer,​ 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 XMMS ==== +
- +
-Permet d'​envoyer tous les fichiers du répertoire dans la liste de lecture de XMMS : +
- +
-<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 if [ -z "​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​ ]; then
    ​dir="​$base"​    ​dir="​$base"​
 else else
-   while [ -"​$1" ​-a ! -d "​$base/​$1"​ ]; do shift; done + while [ -"​$1" ​] && [ ! -d "​$base/​$1"​ ]; do shift; done 
-   ​dir="​$base/​$1"​+ dir="​$base/​$1"​
 fi fi
  
-if [ "​$NAUTILUS_SCRIPT_CURRENT_URI" ​== "​x-nautilus-desktop:///"​ ]; then+if [ "​$NAUTILUS_SCRIPT_CURRENT_URI"​ = "​x-nautilus-desktop:///"​ ]; then
 dir="​Desktop"​ dir="​Desktop"​
 fi fi
  
-if [ "​$NAUTILUS_SCRIPT_CURRENT_URI" ​== "​trash:"​ ]; then+if [ "​$NAUTILUS_SCRIPT_CURRENT_URI"​ = "​trash:"​ ]; then
 dir="​$HOME/​.Trash"​ dir="​$HOME/​.Trash"​
 fi fi
  
-if [ "​$NAUTILUS_SCRIPT_CURRENT_URI" ​== "​file:///"​ ]; then+if [ "​$NAUTILUS_SCRIPT_CURRENT_URI"​ = "​file:///"​ ]; then
 dir="/"​ dir="/"​
 fi fi
  
-FIRST_URI="​`echo -n $NAUTILUS_SCRIPT_SELECTED_URIS`"+FIRST_URI="​$NAUTILUS_SCRIPT_SELECTED_URIS"​
  
-if [ "​$FIRST_URI" ​== "​x-nautilus-desktop:///​home"​ ]; then +if [ "​$FIRST_URI"​ = "​x-nautilus-desktop:///​home"​ ]; then 
-dir="​$HOME"​+ dir="​$HOME
 +elif [ "​$FIRST_URI"​ = "​x-nautilus-desktop:///​computer"​ ]; then 
 + dir="/​"
 fi fi
  
-#if [ "​$FIRST_URI"​ != ""​ ]; then +rhythmbox ​"​$dir"​
-#​dir="​`echo $FIRST_URI | cut -c8-`"​ +
-#fi +
- +
-if [ "​$FIRST_URI"​ == "​x-nautilus-desktop:///​computer"​ ]; then +
-dir="/"​ +
-fi +
- +
- +
-xmms "​$dir"​+
 </​code>​ </​code>​
  
- +==== Envoyer par mail des images compressées petites avec Thunderbird ​====
- +
-==== Créer un lien sur le bureau ​==== +
- +
-Permet de créer des raccourcis sur le bureau :+
  
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
-LINKS="${HOME}/Bureau+IFS='​ 
-ZENITY=zenity+
 +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
  
-warning() { +exit 0
-    ${ZENITY} --warning --warning-text "​$*"​ +
-+
- +
-if [ ! -d "​${LINKS}"​ ]; then +
-    warning "No desktop directory '​${LINKS}'​ found - sorry."​ +
-    ​exit +
-fi +
- +
-declare -a NAUTFILES +
-export IX=0 +
-while read FILE; do +
-    if [ "​x${FILE}"​ != "​x"​ -a "​x${FILE}"​ != '​x"'​ ]; then +
-            NAUTFILES[${IX}]="​${FILE}"​ +
-            IX=$[ ${IX} + 1 ] +
-    fi +
-done <<​EOF +
-${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS[@]} +
-EOF +
- +
-if [ 0 -eq ${IX} ]; then +
-    URI="​${NAUTILUS_SCRIPT_CURRENT_URI}"​ +
-    METHOD="​${URI:​0:​7}"​ +
-    if [ "​file://"​ == "​${METHOD}"​ ]; then +
-        NAUTFILES[0]="​${URI:​7}"​ +
-        IX=1 +
-    fi +
-fi +
- +
-if [ 0 == "​${#​NAUTFILES[@]}"​ ]; then +
-    warning "​Nothing to do" +
-    exit +
-fi +
- +
-for FILE in "​${NAUTFILES[@]}";​ do +
-    TAILBASE=`basename "​${FILE}"​` +
-    NEWNAME=`${ZENITY} --entry \ +
-        --title "Enter link name" \ +
-        --text "Enter the name of the new link for '​${FILE}'"​ \ +
-        --entry-text "​${TAILBASE}"​` +
-    if [ 0 -ne $? -o "​x${NEWNAME}"​ == "​x"​ ]; then +
-        warning "New name cancelled or not entered successfully"​ +
-    else +
-        NEWFILE="​${LINKS}/​${NEWNAME}"​ +
-        if [ -e "​${NEWFILE}"​ ]; then +
-            warning "An object called '​${NEWFILE}'​ exists already"​ +
-        elif ! /bin/ln -s "​${FILE}"​ "​${NEWFILE}";​ then +
-            warning "New link could not be created"​ +
-        fi +
-    fi +
-done+
 </​code>​ </​code>​
  
- +=====Voir aussi===== 
-<note tip>Dans le script d'​origine,​ le lien se créait dans « ~/Desktop »il a été remplacé par « ~/Bureau » puisque nous sommes en version française.</note> +  * [[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]] ​([[https://​wiki.ubuntu.com/​NautilusScriptsHowto|traduction]]), [[utilisateurs:​Fabien26]] (1<​sup>​re</​sup>​ actualisation)[[:​utilisateurs:​ner0lph|Floriang]] (2<​sup>​e</​sup>​ actualisation).//​+//​Contributeurs : [[utilisateurs:​FredB]][[utilisateurs:l_africain|L'​Africain]], [[utilisateurs:​Fabien26]](1<​sup>​ère</​sup>​ actualisation) [[:​utilisateurs:​ner0lph|Floriang]](2<​sup>​ème</​sup>​ actualisation) ​[[:​utilisateurs:​Amiralgaby|Amiralgaby]].//
  • nautilus_scripts.1339443489.txt.gz
  • Dernière modification: Le 11/06/2012, 21:38
  • par a_pirard