Modifications pour le document Nautilus et Zenity
Modifié par john le 2026/09/20 20:29
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,1 @@ 1 -NautilusZenity 1 +Nautilus et Zenity - Contenu
-
... ... @@ -1,90 +3,99 @@ 1 -= Intégration de scripts Bash dans Nautilus avec Zenity = 2 - 3 3 {{toc/}} 4 4 5 5 == Pourquoi intégrer ses scripts dans Nautilus ? == 6 6 7 -Nautilus, le gestionnaire de fichiers de GNOME, permet d'ajouter ses propres scripts au menu contextuel (clic droit). 8 -En combinant cette fonctionnalité avec **Zenity**, on peut créer des interactions graphiques simples ,commeafficher une info-bulle, demander une saisieutilisateurou générer un menuinteractif.5 +Nautilus, le gestionnaire de fichiers de GNOME, permet d'ajouter ses propres scripts au menu contextuel (clic droit). 6 +En combinant cette fonctionnalité avec **Zenity**, on peut créer des interactions graphiques simples : afficher une information, demander une saisie, proposer un menu. 9 9 10 -C'est une solution pratique pour déclencher des automatisations **sans avoir à ouvrir un terminal**.8 +C'est une solution pratique pour déclencher des automatisations **sans ouvrir un terminal**. 11 11 12 12 ---- 13 13 14 14 == Mettre en place un script contextuel == 15 15 16 -1. Créer le dossier si besoin : 17 -{{code language="bash"}} mkdir -p ~/.local/share/nautilus/scripts 18 - {{/code}} 14 +Créer le dossier si besoin : 19 19 20 -2. Écrire ton script, par exemple `info.sh` : 21 -{{code language="bash"}} #!/bin/bash 22 - zenity --info --title="Info" --text="Vous avez cliqué sur : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" 23 - {{/code}} 16 +{{code language="bash"}} 17 +mkdir -p ~~/.local/share/nautilus/scripts 18 +{{/code}} 24 24 25 -3. Le rendre exécutable : 26 -{{code language="bash"}} chmod +x ~/.local/share/nautilus/scripts/info.sh 27 - {{/code}} 20 +Écrire le script, par exemple ##info.sh## : 28 28 29 -4. Redémarrer Nautilus : 30 -{{code language="bash"}} nautilus -q 31 - {{/code}} 22 +{{code language="bash"}} 23 +#!/bin/bash 24 +zenity --info --title="Info" --text="Sélection : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" 25 +{{/code}} 32 32 33 - Après ça, tu verrasunnouveaumenu **Scripts** dansleclic droit sur un fichier ou un dossier.27 +Le rendre exécutable : 34 34 35 ----- 29 +{{code language="bash"}} 30 +chmod +x ~~/.local/share/nautilus/scripts/info.sh 31 +{{/code}} 36 36 37 - == Variablesdisponibles dans un scriptNautilus==33 +Redémarrer Nautilus : 38 38 39 -Tu peux utiliser ces variables fournies automatiquement : 35 +{{code language="bash"}} 36 +nautilus -q 37 +{{/code}} 40 40 41 -|= Variable |= Description | 42 -| `$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS` | Chemins complets des fichiers sélectionnés | 43 -| `$NAUTILUS_SCRIPT_SELECTED_URIS` | Liste des URIs sélectionnés | 44 -| `$NAUTILUS_SCRIPT_CURRENT_URI` | URI du dossier actuel | 39 +Un menu **Scripts** apparaît alors dans le clic droit. 45 45 46 46 ---- 47 47 48 -== Exemplesutiles ==43 +== Variables disponibles == 49 49 50 -=== 📁 Renommer un fichier sélectionné === 45 +|=Variable|=Contenu 46 +|##$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS##|Chemins complets des fichiers sélectionnés, un par ligne 47 +|##$NAUTILUS_SCRIPT_SELECTED_URIS##|Les mêmes, sous forme d'URI 48 +|##$NAUTILUS_SCRIPT_CURRENT_URI##|URI du dossier affiché 51 51 52 -Demande à l’utilisateur un nouveau nom : 50 +{{info}} 51 +C'est la variable ##NAUTILUS_SCRIPT_SELECTED_FILE_PATHS## qui fait foi : les arguments (##$1##, ##$@##) ne sont pas toujours transmis. Elle contient un chemin par ligne, à lire avec une boucle ##while read##. 52 +{{/info}} 53 53 54 +---- 55 + 56 +== Exemples == 57 + 58 +=== 📁 Renommer le fichier sélectionné === 59 + 54 54 {{code language="bash"}} 55 55 #!/bin/bash 56 -fichier=$(basename "$1") 57 -nouveau_nom=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$fichier") 58 -[ -n "$nouveau_nom" ] && mv "$1" "$(dirname "$1")/$nouveau_nom" 59 -{{/code}} 62 +fichier=$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS") 63 +[ -z "$fichier" ] && exit 0 60 60 61 ----- 65 +nouveau=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$(basename "$fichier")") 66 +[ -z "$nouveau" ] && exit 0 62 62 63 -=== 🗜️ Compresser un fichier ou un dossier === 68 +if ! mv -n "$fichier" "$(dirname "$fichier")/$nouveau"; then 69 + zenity --error --text="Renommage impossible" 70 +fi 71 +{{/code}} 64 64 65 - Créeunearchive `.tar.gz` àpartir desélémentssélectionnés:73 +=== 🗜️ Compresser la sélection === 66 66 67 67 {{code language="bash"}} 68 68 #!/bin/bash 69 -for fichier in "$@"; do 77 +cd "$(dirname "$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")")" || exit 1 78 + 79 +while IFS= read -r fichier; do 80 + [ -z "$fichier" ] && continue 70 70 nom=$(basename "$fichier") 71 - tar -czf "$nom.tar.gz" "$fichier" 72 -done 82 + tar -czf "$nom.tar.gz" "$nom" 83 +done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" 84 + 73 73 zenity --info --text="Compression terminée" 74 74 {{/code}} 75 75 76 - ----88 +=== 🧠 Menu interactif === 77 77 78 -=== 🧠 Menu interactif personnalisé === 79 - 80 -Propose à l'utilisateur une action à choisir : 81 - 82 82 {{code language="bash"}} 83 -choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer" "Annuler") 91 +#!/bin/bash 92 +choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer") 84 84 85 -case $choix in 86 - "Compresser") .. .;;87 - "Renommer") .. .;;94 +case "$choix" in 95 + "Compresser") ~~/.local/share/nautilus/scripts/compresser.sh ;; 96 + "Renommer") ~~/.local/share/nautilus/scripts/renommer.sh ;; 88 88 esac 89 89 {{/code}} 90 90 ... ... @@ -92,21 +92,23 @@ 92 92 93 93 == Bonnes pratiques == 94 94 95 -* Teste toujours tes scripts avant de les rendre publics 96 -* Prévois des messages d’erreur clairs via Zenity (`zenity --error`)-- 97 -* Utilise les noms de fichiers entre guillemets (`"$fichier"`) pour gérer les espaces 104 +* Tester le script dans un terminal avant de l'installer, en définissant la variable à la main 105 +* Toujours entourer les chemins de guillemets : les noms contiennent souvent des espaces 106 +* Prévoir un message d'erreur clair avec ##zenity --error## 107 +* Sortir proprement si la sélection est vide ou si l'utilisateur annule 108 +* Préférer ##mv -n## et ##cp -n## pour ne jamais écraser un fichier existant 98 98 99 99 ---- 100 100 101 101 == Pour aller plus loin == 102 102 103 -* Manuel Zenity https~://manpages.debian.org/zenity)//104 -* Scripts Nautilus surGNOMEHelphttps~://help.gnome.org/users/nautilus/stable/scripts.html)//105 -* Créerdesinterfaces BashGUIhttps~://wiki.archlinux.org/title/Zenity)//114 +* [[Manuel Zenity>>https://manpages.debian.org/zenity]] 115 +* [[Scripts Nautilus (aide GNOME)>>https://help.gnome.org/users/nautilus/stable/scripts.html]] 116 +* [[Zenity sur ArchWiki>>https://wiki.archlinux.org/title/Zenity]] 106 106 107 107 ---- 108 108 109 109 == Liens internes == 110 110 111 -* [[Retour aux scripts perso nnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]122 +* [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 112 112 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]