0 Votes

Code source wiki de Nautilus et Zenity

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

Masquer les derniers auteurs
john 1.1 1 {{toc/}}
2
3 == Pourquoi intégrer ses scripts dans Nautilus ? ==
4
john 5.1 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.
john 1.1 7
john 5.1 8 C'est une solution pratique pour déclencher des automatisations **sans ouvrir un terminal**.
john 1.1 9
john 2.1 10 ----
john 1.1 11
12 == Mettre en place un script contextuel ==
13
john 5.1 14 Créer le dossier si besoin :
john 1.1 15
john 5.1 16 {{code language="bash"}}
17 mkdir -p ~~/.local/share/nautilus/scripts
18 {{/code}}
john 1.1 19
john 5.1 20 Écrire le script, par exemple ##info.sh## :
john 1.1 21
john 5.1 22 {{code language="bash"}}
23 #!/bin/bash
24 zenity --info --title="Info" --text="Sélection : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
25 {{/code}}
john 1.1 26
john 5.1 27 Le rendre exécutable :
john 1.1 28
john 5.1 29 {{code language="bash"}}
30 chmod +x ~~/.local/share/nautilus/scripts/info.sh
31 {{/code}}
32
33 Redémarrer Nautilus :
34
35 {{code language="bash"}}
36 nautilus -q
37 {{/code}}
38
39 Un menu **Scripts** apparaît alors dans le clic droit.
40
john 2.1 41 ----
john 1.1 42
john 5.1 43 == Variables disponibles ==
john 1.1 44
john 5.1 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é
john 1.1 49
john 5.1 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}}
john 1.1 53
john 2.1 54 ----
john 1.1 55
john 5.1 56 == Exemples ==
john 1.1 57
john 5.1 58 === 📁 Renommer le fichier sélectionné ===
john 1.1 59
60 {{code language="bash"}}
61 #!/bin/bash
john 5.1 62 fichier=$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
63 [ -z "$fichier" ] && exit 0
john 1.1 64
john 5.1 65 nouveau=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$(basename "$fichier")")
66 [ -z "$nouveau" ] && exit 0
john 1.1 67
john 5.1 68 if ! mv -n "$fichier" "$(dirname "$fichier")/$nouveau"; then
69 zenity --error --text="Renommage impossible"
70 fi
71 {{/code}}
john 1.1 72
john 5.1 73 === 🗜️ Compresser la sélection ===
john 1.1 74
75 {{code language="bash"}}
76 #!/bin/bash
john 5.1 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
john 1.1 81 nom=$(basename "$fichier")
john 5.1 82 tar -czf "$nom.tar.gz" "$nom"
83 done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
84
john 1.1 85 zenity --info --text="Compression terminée"
86 {{/code}}
87
john 5.1 88 === 🧠 Menu interactif ===
john 1.1 89
90 {{code language="bash"}}
john 5.1 91 #!/bin/bash
92 choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer")
john 1.1 93
john 5.1 94 case "$choix" in
95 "Compresser") ~~/.local/share/nautilus/scripts/compresser.sh ;;
96 "Renommer") ~~/.local/share/nautilus/scripts/renommer.sh ;;
john 1.1 97 esac
98 {{/code}}
99
john 2.1 100 ----
john 1.1 101
102 == Bonnes pratiques ==
103
john 5.1 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
john 1.1 109
john 2.1 110 ----
john 1.1 111
112 == Pour aller plus loin ==
113
john 5.1 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]]
john 1.1 117
john 2.1 118 ----
john 1.1 119
120 == Liens internes ==
121
john 5.1 122 * [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]
john 3.1 123 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]