| Les deux révisions précédentesRévision précédente | |
| nautilus_scripts [Le 30/05/2026, 21:11] – [Image] arverne73 | nautilus_scripts [Le 01/06/2026, 03:15] (Version actuelle) – mise en forme / syntaxe | suppr obsolete (un peu, encore du boulot sûrement) | file, pas code ! krodelabestiole |
|---|
| {{tag>Jammy nautilus}} | {{tag>Jammy nautilus}} |
| |
| ---- | ====== Les scripts pour GNOME Fichiers ====== |
| | |
| ====== Les scripts pour Nautilus ====== | |
| |
| Le gestionnaire de fichiers Nautilus permet d'exécuter des [[tutoriel:script_shell|scripts]], sous la forme de fichiers textes. | Le gestionnaire de fichiers [[:nautilus|GNOME Fichiers]] permet d'exécuter des [[tutoriel:script_shell|scripts]], sous la forme de fichiers textes.\\ |
| Les scripts sont de "petits" programmes permettant une multitude de fonctionnalités. | Les scripts sont de "petits" programmes permettant une multitude de fonctionnalités. |
| |
| Les scripts suivants et d'autres trouvés sur le Web peuvent être copiés dans le répertoire de scripts de Nautilus. Certains s'exécutent avec les [[:sudo|privilèges utilisateur]] ce qui signifie que vous pouvez endommager gravement votre système. Agissez donc avec beaucoup de prudence quand le script vous demande le mot de passe pour modifier le système. | 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 [[:permissions administrateur]] 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. | Beaucoup de scripts sont déjà présents dans les [[:dépôts]] et peuvent être facilement installés par votre [[:gestionnaire de paquets]]. Reportez-vous à la page de l'[[:nautilus_utilisation_avancee|utilisation avancée de GNOME Fichiers]] pour voir la liste complète de ces scripts. |
| |
| ===== 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 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). | Pour commencer, il vous faudra [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>nautilus-scripts-manager]]''. Ce paquet gère le dossier de scripts de GNOME Fichiers 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''.\\ |
| Quand des scripts sont présents dans le dossier de scripts, il s'ouvre par clic-droit → Scripts → Ouvrir le dossier de scripts. | (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. | 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 GNOME Fichiers. De plus vous n'avez pas besoin de rajouter l'extension ''.sh'' de scripts [[:shell]]. Il est également possible de créer des répertoires pour mieux organiser les scripts.\\ |
| Vos scripts seront alors disponibles dans toutes les fenêtres Nautilus dans //Fichier // → Scripts, ainsi que dans le menu contextuel (clic droit). Vous ne verrez pas le menu //Fichier // tant que vous n'aurez pas ajouté votre premier script dans **~/.local/share/nautilus/scripts/**. | Vos scripts seront alors disponibles dans toutes les fenêtres GNOME Fichiers 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 : | Le chemin des scripts pour : |
| * Caja (Mate) est : ''~/.config/caja/scripts'' | * Caja (MATE) est : ''~/.config/caja/scripts'' |
| * Nautilus (Gnome/Unity) est : ''~/.local/share/nautilus/scripts'' | * GNOME Fichiers (GNOME/Unity) est : ''~/.local/share/nautilus/scripts'' |
| * Némo (Cinnamon) est : ''~/.local/share/nemo/scripts/'' | * Némo (Cinnamon) est : ''~/.local/share/nemo/scripts/'' |
| |
| Voir aussi: | Voir aussi : |
| * [[#Les pièges à éviter]], | * [[#Les pièges à éviter]] |
| * [[#Exemples]]. | * [[#Exemples]] |
| |
| ===== Sélection de scripts ===== | ===== Sélection de scripts ===== |
| |
| Vous avez déjà des scripts Nautilus sur la page [[:scripts utiles]]. | Vous avez déjà des scripts GNOME Fichiers sur la page [[:scripts utiles]]. |
| | |
| Le script [[https://www.linux-apps.com/content/show.php/Script+Installer?content=67612|Script Installer]] permet d'installer automatiquement les scripts Nautilus.(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 ==== |
| ==== Image ==== | ==== 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. | * [[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 [[:arborescence#répertoire personnel]].\\ |
| Vous pouvez aussi ajouter d'autres tailles que celles prévues dans le script (800 et 1024) : il suffit de le modifier en ajoutant les tailles qui vous intéressent à la ligne **SIZES**. | Vous pouvez aussi ajouter d'autres tailles que celles prévues dans le script (800 et 1024) : il suffit de le modifier en ajoutant les tailles qui vous intéressent à la ligne ''SIZES''. |
| |
| Pour chaque taille d'image, il faut créer un lien vers ce script. | Pour chaque taille d'image, il faut créer un lien vers ce script. |
| |
| Ouvrir un terminal, aller dans le répertoire ~/.local/share/nautilus/scripts/ (dans le terminal, taper ''cd+espace'' puis tirer ce dossier scripts sur le terminal puis la touche 'Entrée'). | Ouvrir un terminal, aller dans le répertoire ''~/.local/share/nautilus/scripts/'' (dans le terminal, taper '''cd''+''espace'' puis tirer ce répertoire ''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> | Entrer alors, par exemple, la commande suivante pour la taille 600 pixels : |
| (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). | <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. | Faire de même pour toutes les autres tailles prévues dans le script.\\ |
| Bien ajouter .sh au nom du script pour qu'il apparaisse et s'exécute. | Bien ajouter ''.sh'' au nom du script pour qu'il apparaisse et s'exécute. |
| |
| * 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. [[:deb#installer_un_paquet_deb|Installez le paquet]] ''[[apt>nautilus-image-converter]]'' puis redémarrer la [[:session utilisateur|session]]. |
| |
| ==== Audio ==== | ==== Audio ==== |
| * [[https://www.linux-apps.com/content/show.php/Enqueue+in+Audacious?content=80429|Enqueue in Audacious]] | * [[https://www.linux-apps.com/content/show.php/Enqueue+in+Audacious?content=80429|Enqueue in Audacious]] |
| * [[https://www.linux-apps.com/content/show.php/Extract+Audio?content=83072|Extraire l'audio de tout fichier multimedia]]. | * [[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]] (requiert [[:TiMiDiTy]]) |
| |
| ==== Gestion des fichiers ==== | ==== Gestion des fichiers ==== |
| |
| ===== Créer un script ===== | ===== Créer un script ===== |
| | |
| Il vous suffit d'un [[editeur_de_texte|éditeur de texte]] pour écrire votre script. | Il vous suffit d'un [[editeur_de_texte|éditeur de texte]] pour écrire votre script. |
| |
| |
| Il existe des outils d'analyse de scripts pour savoir s'il respecte les bonnes pratiques. Pour le langage bash il existe | Il existe des outils d'analyse de scripts pour savoir s'il respecte les bonnes pratiques. Pour le langage bash il existe |
| **[[apt>shellcheck]]**. | ''[[apt>shellcheck]]''. |
| |
| ===== Les pièges à éviter ===== | ===== Les pièges à éviter ===== |
| |
| Il **faut donc proscrire** d'utiliser des scripts du genre : | Il **faut donc proscrire** d'utiliser des scripts du genre : |
| | <file> |
| <code bash> | |
| for arg | for arg |
| do | do |
| do_something "$arg" | do_something "$arg" |
| done | done |
| </code> | </file> |
| |
| **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). | **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> | <file> |
| #!/bin/bash | #!/bin/bash |
| function afficherFichier () { | function afficherFichier () { |
| IFS=$'\n' # on limite le IFS aux sauts de ligne | IFS=$'\n' # on limite le IFS aux sauts de ligne |
| afficherFichier "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | afficherFichier "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
| </code> | </file> |
| |
| ==== 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. |
| |
| Par exemple : | Par exemple : |
| |
| <code bash> | <file> |
| for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| do | do |
| do_something "$arg" | do_something "$arg" |
| done | done |
| </code> | </file> |
| |
| **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'. | **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'. |
| |
| La même solution d'une autre manière : | La même solution d'une autre manière : |
| <code bash> | <file> |
| printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | | printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | |
| while read -r arg | while read -r arg |
| do_something "$arg" | do_something "$arg" |
| done | done |
| </code> | </file> |
| |
| 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'[[wp>Input_Field_Separators|IFS]] : |
| |
| <code bash> | <file> |
| IFS=' | IFS=' |
| ' | ' |
| ' | ' |
| do_something $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | do_something $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS |
| </code> | </file> |
| |
| 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. |
| par exemple pour une opération sur des fichiers mp3 : | par exemple pour une opération sur des fichiers mp3 : |
| |
| <code bash> | <file> |
| #!/bin/bash | #!/bin/bash |
| IFS=' | IFS=' |
| find "$arg" -depth -iname "*.mp3" -exec votre_commande {} \; | find "$arg" -depth -iname "*.mp3" -exec votre_commande {} \; |
| done | done |
| </code> | </file> |
| |
| Le *.mp3 va prendre en compte les fichier mp3 contenus dans votre sélection et le {} remplace le nom de fichier dans votre commande à appliquer sur les mp3. | Le ''.mp3'' va prendre en compte les fichier MP3 contenus dans votre sélection et le {} remplace le nom de fichier dans votre commande à appliquer sur les mp3. |
| |
| ===== Exemples ===== | ===== Exemples ===== |
| |
| ==== 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> | <file> |
| #! /bin/bash | #! /bin/bash |
| |
| rm ./*~ | rm ./*~ |
| zenity --info --text="Fichiers de backup *~ supprimés :)" | zenity --info --text="Fichiers de backup *~ supprimés :)" |
| </code> | </file> |
| |
| <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> |
| |
| === Éditer un fichier avec VIM 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> | <note warning>**Extrêmement risqué, ne jouez pas avec**</note> |
| <code bash> | <file> |
| #!/bin/bash | #!/bin/bash |
| # C'est sérieux il ne faut pas jouer avec les droits root | # 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" | 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")" | gnome-terminal -- pkexec --user root vim "$(realpath "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")" |
| </code> | </file> |
| |
| ==== 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> | <file> |
| #!/bin/sh | #!/bin/sh |
| |
| |
| rhythmbox "$dir" | rhythmbox "$dir" |
| </code> | </file> |
| |
| ==== Envoyer par mail des images compressées petites avec Thunderbird ==== | ==== Envoyer par mail des images compressées petites avec Thunderbird ==== |
| |
| <code bash> | <file> |
| #!/bin/sh | #!/bin/sh |
| IFS=' | IFS=' |
| |
| exit 0 | exit 0 |
| </code> | </file> |
| |
| ==== Afficher la somme de contrôle SHA256 dans Ubuntu 24.04==== | ==== Afficher la somme de contrôle SHA256 dans Ubuntu 24.04==== |
| |
| <code bash> | <file> |
| #!/bin/sh | #!/bin/sh |
| function afficherHashes () { | function afficherHashes () { |
| IFS=$'\n' # on limite l'IFS à "Retour à la ligne" seulement | IFS=$'\n' # on limite l'IFS à "Retour à la ligne" seulement |
| afficherHashes "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | afficherHashes "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
| </code> | </file> |
| |
| |
| * [[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>ème</sup> actualisation) [[:utilisateurs:Amiralgaby|Amiralgaby]].// | ---- |
| | //[[:Contributeurs]] : [[:utilisateurs:FredB]], [[:utilisateurs:L'Africain]], [[:utilisateurs:Fabien26]], (1<sup>ère</sup> actualisation) [[:utilisateurs:ner0lph|Floriang]], (2<sup>ème</sup> actualisation) [[:utilisateurs:Amiralgaby]].// |