0 Votes

ScriptsPerso/NautilusZenity

Modifié par john le 2025/05/25 00:32

Intégration de scripts Bash dans Nautilus avec Zenity

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, comme afficher une info-bulle, demander une saisie utilisateur ou générer un menu interactif.

C'est une solution pratique pour déclencher des automatisations sans avoir à ouvrir un terminal.


Mettre en place un script contextuel

  1. Créer le dossier si besoin :
       mkdir -p ~/.local/share/nautilus/scripts
       

2. Écrire ton script, par exemple `info.sh` :
  #!/bin/bash
  zenity --info --title="Info" --text="Vous avez cliqué sur : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
   

3. Le rendre exécutable :
   chmod +x ~/.local/share/nautilus/scripts/info.sh
   

4. Redémarrer Nautilus :
   nautilus -q
   

Après ça, tu verras un nouveau menu Scripts dans le clic droit sur un fichier ou un dossier.


Variables disponibles dans un script Nautilus

Tu peux utiliser ces variables fournies automatiquement :

 Variable  Description  
 `$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS`  Chemins complets des fichiers sélectionnés  
 `$NAUTILUS_SCRIPT_SELECTED_URIS`  Liste des URIs sélectionnés  
 `$NAUTILUS_SCRIPT_CURRENT_URI`  URI du dossier actuel  

Exemples utiles

📁 Renommer un fichier sélectionné

Demande à l’utilisateur un nouveau nom :

#!/bin/bash
fichier=$(basename "$1")
nouveau_nom=$(zenity --entry --title="Renommer" --text="Nouveau nom :" --entry-text="$fichier")
[ -n "$nouveau_nom" ] && mv "$1" "$(dirname "$1")/$nouveau_nom"

🗜️ Compresser un fichier ou un dossier

Crée une archive `.tar.gz` à partir des éléments sélectionnés :

#!/bin/bash
for fichier in "$@"; do
 nom=$(basename "$fichier")
  tar -czf "$nom.tar.gz" "$fichier"
done
zenity --info --text="Compression terminée"

🧠 Menu interactif personnalisé

Propose à l'utilisateur une action à choisir :

choix=$(zenity --list --title="Action" --column="Option" "Compresser" "Renommer" "Annuler")

case $choix in
 "Compresser") ... ;;
 "Renommer") ... ;;
esac

Bonnes pratiques

  • Teste toujours tes scripts avant de les rendre publics
  • Prévois des messages d’erreur clairs via Zenity (`zenity error`)
  • Utilise les noms de fichiers entre guillemets (`"$fichier"`) pour gérer les espaces

Pour aller plus loin

  • Manuel Zenity https:manpages.debian.org/zenity)
  • Scripts Nautilus sur GNOME Help https:help.gnome.org/users/nautilus/stable/scripts.html)
  • Créer des interfaces Bash GUI https:wiki.archlinux.org/title/Zenity)

Liens internes