Nautilus et Zenity
Modifié par john le 2026/09/20 20:29
Pourquoi intégrer ses scripts dans Nautilus ?
Nautilus, le gestionnaire de fichiers de GNOME, permet d'ajouter ses propres scripts au menu contextuel (clic droit).
En combinant cette fonctionnalité avec Zenity, on peut créer des interactions graphiques simples : afficher une information, demander une saisie, proposer un menu.
C'est une solution pratique pour déclencher des automatisations sans ouvrir un terminal.
Mettre en place un script contextuel
Créer le dossier si besoin :
mkdir -p ~~/.local/share/nautilus/scripts
Écrire le script, par exemple info.sh :
#!/bin/bash
zenity --info --title="Info" --text="Sélection : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
zenity --info --title="Info" --text="Sélection : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
Le rendre exécutable :
chmod +x ~~/.local/share/nautilus/scripts/info.sh
Redémarrer Nautilus :
nautilus -q
Un menu Scripts apparaît alors dans le clic droit.
Variables disponibles
| Variable | Contenu |
|---|---|
| $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | Chemins complets des fichiers sélectionnés, un par ligne |
| $NAUTILUS_SCRIPT_SELECTED_URIS | Les mêmes, sous forme d'URI |
| $NAUTILUS_SCRIPT_CURRENT_URI | URI du dossier affiché |
Exemples
📁 Renommer le fichier sélectionné
#!/bin/bash
fichier=$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
[ -z "$fichier" ] && exit 0
nouveau=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$(basename "$fichier")")
[ -z "$nouveau" ] && exit 0
if ! mv -n "$fichier" "$(dirname "$fichier")/$nouveau"; then
zenity --error --text="Renommage impossible"
fi
fichier=$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
[ -z "$fichier" ] && exit 0
nouveau=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$(basename "$fichier")")
[ -z "$nouveau" ] && exit 0
if ! mv -n "$fichier" "$(dirname "$fichier")/$nouveau"; then
zenity --error --text="Renommage impossible"
fi
🗜️ Compresser la sélection
#!/bin/bash
cd "$(dirname "$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")")" || exit 1
while IFS= read -r fichier; do
[ -z "$fichier" ] && continue
nom=$(basename "$fichier")
tar -czf "$nom.tar.gz" "$nom"
done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
zenity --info --text="Compression terminée"
cd "$(dirname "$(head -n 1 <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")")" || exit 1
while IFS= read -r fichier; do
[ -z "$fichier" ] && continue
nom=$(basename "$fichier")
tar -czf "$nom.tar.gz" "$nom"
done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
zenity --info --text="Compression terminée"
🧠 Menu interactif
#!/bin/bash
choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer")
case "$choix" in
"Compresser") ~~/.local/share/nautilus/scripts/compresser.sh ;;
"Renommer") ~~/.local/share/nautilus/scripts/renommer.sh ;;
esac
choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer")
case "$choix" in
"Compresser") ~~/.local/share/nautilus/scripts/compresser.sh ;;
"Renommer") ~~/.local/share/nautilus/scripts/renommer.sh ;;
esac
Bonnes pratiques
- Tester le script dans un terminal avant de l'installer, en définissant la variable à la main
- Toujours entourer les chemins de guillemets : les noms contiennent souvent des espaces
- Prévoir un message d'erreur clair avec zenity
error - Sortir proprement si la sélection est vide ou si l'utilisateur annule
- Préférer mv -n et cp -n pour ne jamais écraser un fichier existant