0 Votes

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"

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

VariableContenu
$NAUTILUS_SCRIPT_SELECTED_FILE_PATHSChemins complets des fichiers sélectionnés, un par ligne
$NAUTILUS_SCRIPT_SELECTED_URISLes mêmes, sous forme d'URI
$NAUTILUS_SCRIPT_CURRENT_URIURI du dossier affiché
Information

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.


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

🗜️ 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"

🧠 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

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

Pour aller plus loin


Liens internes