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 27/02/2015, 11:42] L'Africain Maj de la page |
nautilus_scripts [Le 09/04/2025, 23:37] (Version actuelle) 86.248.194.184 [Conversion de fichier] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Precise Trusty 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 pauqet 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 26: | Ligne 31: | ||
===== Sélection de scripts ===== | ===== Sélection de scripts ===== | ||
- | Vous avez déjà des scripts Nautilus présents dans [[:ubuntu_tweak#Les_scripts_nautilus|Ubuntu Tweak]], ainsi que les 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]]) |
+ | * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22833469#p22833469|Convertir un lot d'images au format webp]] | ||
==== 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. | * 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 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]]) | ||
- | * [[<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]] 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é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. | + | 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é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'. | + | Il existe des outils d'analyse de scripts pour savoir s'il respecte les bonnes pratiques. Pour 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 139: | Ligne 156: | ||
</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 164: | Ligne 180: | ||
</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 177: | Ligne 192: | ||
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 189: | Ligne 203: | ||
</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 200: | Ligne 213: | ||
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 221: | Ligne 233: | ||
==== 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 230: | Ligne 242: | ||
</code> | </code> | ||
+ | <note tip> On peut désactiver la création de fichier de sauvegarde par Gedit en décochant la case "Créer une copie de sauvegarde des fichiers avant l’enregistrement" dans **Édition -> Préférences -> Éditeur**.</note> | ||
==== Ouvrir en tant qu'administrateur ==== | ==== 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 [ ! -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 | + | |
- | 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]] | ||
- | * **[[http://www.gtk-apps.org/index.php?xcontentmode=188&PHPSESSID=9e0f49b3a15f120a1ed0ad1919a29f99|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]].// |