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 26/04/2018, 14:21]
L'Africain ancienne révision (Le 04/02/2018, 12:08) restaurée
nautilus_scripts [Le 17/01/2024, 11:40] (Version actuelle)
arverne73 orthographe
Ligne 1: Ligne 1:
-{{tag>Xenial ​nautilus}}+{{tag>Jammy nautilus}}
  
 ---- ----
Ligne 12: Ligne 12:
  
 ===== Installation ===== ===== 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**. \\ +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 ​GNOME. 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).+(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. 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. 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. +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/**.+ 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: Voir aussi:
Ligne 28: Ligne 33:
 Vous avez déjà des scripts Nautilus sur la page [[: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 37: 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 49: 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]])   * [[timidity#​script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]])
Ligne 57: Ligne 61:
 ==== 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.   * 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]])   * [[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 pièce-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 pièce-jointe de thunderbird(amélioré)]] -lien mort- 
   * [[:​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]]) 
-  * [[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]] aussi [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=6755501#​p6755501|ici]],​ +  * [[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-titres sur download_opensubtitle]].+
  
 +===== Créer un script =====
 +Il vous suffit d'un [[editeur_de_texte|éditeur de texte]] pour écrire votre script.
  
-===== Les pièges à éviter =====+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.
  
-La première chose qu'​un ​**script ​Nautilus** doit récupérerc'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)Malheureusement,​ c'est loin d'être quelque chose de trivial+Chaque fois qu'un script ​est appeléNautilus définit automatiquement des variables qui peuvent être utilisées dans vos scripts. 
-En effet, à cause soit de bugs, soit d'interprétation du shell, plusieurs choses sont à ne pas utiliser.+  - ''​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**.\\ 
  
-==== Ne pas utiliser ​les arguments passés aux scripts ====+<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>​
  
-**Nautilus** passe en argument ​les noms des fichiers sélectionnésPar 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'​.+Il existe des outils d'​analyse de scripts pour savoir s'il respecte ​les bonnes pratiquesPour le langage bash il existe 
 +**[[apt>​shellcheck]]**.
  
-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]].+===== Les pièges à éviter =====
  
-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]].+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.
  
-Il **ne faut donc pas** utiliser des scripts du genre :+==== 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''​ 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. 
 + 
 +Il **faut donc proscrire** d'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 140: Ligne 155:
 </​code>​ </​code>​
  
-Ces scripts ne marcheraient pas dans tous les cas. Normalement,​ ce 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).
- +
-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 : C'est donc cette variable qu'il faut utiliser. Par exemple :
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
- +function ​afficherFichier ​() {  
-function ​faireQqChose ​() { + zenity --info --text "le fichier est $*"  
- zenity --info --text "le fichier est $@+}
- }+
  
 IFS=$'​\n'​ # on limite le IFS aux sauts de ligne IFS=$'​\n'​ # on limite le IFS aux sauts de ligne
-faireQqChose ​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS +afficherFichier "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
- +
-exit 0+
 </​code>​ </​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 ==== ==== 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 177: 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 190: 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 202: 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 213: 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 234: Ligne 232:
  
 ==== 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 244: Ligne 242:
  
 <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>​ <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 ==== ==== Ouvrir en tant qu'​administrateur ====
  
-=== Éditer un fichier avec Gedit avec les privilèges ROOT === +=== Éditer un fichier avec VIM avec les privilèges ROOT === 
 +<note warning>​**Extrêmement risqué, ne jouez pas avec**</​note>​
 <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 » === 
- 
-<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 ==== ==== Lire les fichiers du répertoire avec Rhythmbox ====
- 
 Permet d'​envoyer tous les fichiers du répertoire dans la liste de lecture de [[:​Rhythmbox]] : Permet d'​envoyer tous les fichiers du répertoire dans la liste de lecture de [[:​Rhythmbox]] :
  
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
-base="​$(echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/'​ -f3- | sed '​s/​%20/​ /​g'​)"​+ 
 +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 +
-dir="​$HOME"​ +
-fi+
  
-if [ "​$FIRST_URI"​ == "​x-nautilus-desktop:///​computer"​ ]; then +if [ "​$FIRST_URI"​ = "​x-nautilus-desktop:///​home"​ ]; then 
-dir="/"​+ dir="​$HOME"​ 
 +elif [ "​$FIRST_URI" ​= "​x-nautilus-desktop:///​computer"​ ]; then 
 + dir="/"​
 fi fi
 +
 rhythmbox "​$dir"​ rhythmbox "​$dir"​
 </​code>​ </​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===== =====Voir aussi=====
   * [[http://​askubuntu.com/​questions/​281062/​how-to-get-nautilus-scripts-working-on-ubuntu-13-04|Question concernant les scripts Nautilus]],   * [[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://​wiki.ubuntu.com/​NautilusScriptsHowto|traduction]]
-  ​* **[[https://​www.linux-apps.com/​browse/​cat/​126/​order/​latest|Scripts pour Nautilus sur gtk-apps.org]]** +  * [[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]] ​+  * [[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).//​+//​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.1524745301.txt.gz
  • Dernière modification: Le 26/04/2018, 14:21
  • par L'Africain