Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
nautilus_scripts [Le 31/07/2012, 04:42] 78.251.21.118 [Administration] info de version pour renamer et lucid |
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. | ||
- | ===== Quelques explications ===== | + | 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. | ||
- | Le répertoire de scripts de Nautilus est **~/.gnome2/nautilus-scripts**. \\ | + | ===== Installation ===== |
- | Il s'ouvre, s'il existe, par clic-droit ou File → Script → Ouvrir le dossier 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). | ||
+ | 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 rendez-les exécutables ([[permissions]]) (''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 Nautilus. De 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 ont rarement de l'importance;pour les scripts, c'est la première ligne #! qui compte). 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 // 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». | + | 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: | ||
- | [[#Les pièges à éviter]] -- | + | * [[#Les pièges à éviter]], |
- | [[#Exemples]] | + | * [[#Exemples]]. |
- | + | ||
- | ===== Liens ===== | + | |
- | + | ||
- | * **[[http://www.gtk-apps.org/index.php?xcontentmode=188&PHPSESSID=9e0f49b3a15f120a1ed0ad1919a29f99|Scripts pour Nautilus sur gtk-apps.org]]** | + | |
- | * [[http://g-scripts.sourceforge.net/|Site officiel de nautilus script, avec quelques scripts]] | + | |
===== 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 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]]) |
==== 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 efficace. Descriptif d'installation à lire mais qui doit être un peu aménagé : le répertoire proposé pour l'enregistrement du script ~/.gnome2/ n'existe plus mais peut être remplacé par n'importe quel répertoire personnel. Pour 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. (pour ubuntu 10.4.4 utilisez la version 2.3) | + | * [[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-titres. download_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 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> | ||
+ | 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). Malheureusement, c'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 script, il 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 149: | 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). |
+ | C'est donc cette variable qu'il faut utiliser. Par 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 174: | 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 187: | 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 199: | 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 210: | 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 229: | 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 245: | Ligne 241: | ||
</code> | </code> | ||
- | ==== Monter et démonter une image ISO ==== | + | <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> |
- | + | ||
- | === 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 [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done | + | while [ -n "$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 1 | + | |
- | 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]].// |