0 Votes

Modifications pour le document Nautilus et Zenity

Modifié par john le 2026/09/20 20:29

Depuis la version 3.2
modifié par john
sur 2026/09/20 19:45
Commentaire de modification : Update document after refactoring.
À la version 5.1
modifié par john
sur 2026/09/20 20:29
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

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, comme afficher une info-bulle, demander une saisie utilisateur ou générer un menu interactif.
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 verras un nouveau menu **Scripts** dans le clic 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 -== Variables disponibles dans un script Nautilus ==
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 -== Exemples utiles ==
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ée une archive `.tar.gz` à partir des éléments sé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 sur GNOME Help https~://help.gnome.org/users/nautilus/stable/scripts.html)//
105 -* Créer des interfaces Bash GUI https~://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 personnels>>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]]