Comment étendre le gestionnaire de fichiers Gnome Nautilus avec des scripts personnalisés

Comment étendre le gestionnaire de fichiers Gnome Nautilus avec des scripts personnalisés

Bien que gnome, dans ses 3.X itération a été l'objet de nombreux débats, en raison de son paradigme de bureau non traditionnel, c'est probablement le bureau le plus utilisé sur Linux. Le gestionnaire de fichiers par défaut inclus dans Gnome est Nautilus (le nouveau nom de l'application est «Fichiers»). Dans ce tutoriel, nous verrons comment nous pouvons étendre le gestionnaire de fichiers avec les fonctionnalités fournies par les scripts personnalisés.

Dans ce tutoriel, vous apprendrez:

  • Comment utiliser des scripts personnalisés pour étendre les fonctionnalités de Nautilus


Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution
Logiciel Le gestionnaire de fichiers Nautilus
Autre Aucune exigence spécifique n'est nécessaire pour suivre ce tutoriel
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Création du répertoire des scripts

La première chose que nous voulons faire est de créer le répertoire qui hébergera nos scripts: ~ /.Local / Share / Nautilus / Scripts. Une fois placés dans ce répertoire, les scripts apparaîtront automatiquement dans le menu contextuel de Nautilus affiché lorsque nous sélectionnons un ou plusieurs fichiers:

$ mkdir -p ~ /.Local / Share / Nautilus / Scripts

Dans la commande ci-dessus, nous avons utilisé le -p commutateur (court pour --parents) Pour être sûr que tous les répertoires du chemin spécifié sont créés au besoin, et aucune erreur n'est générée si certains d'entre eux existent déjà. Avec notre répertoire en place, nous pouvons commencer à travailler sur nos scripts très utiles: notez qu'ils seront correctement inclus dans le menu contextuel de Nautilus uniquement s'ils sont fabriqués exécutable. Avant d'écrire de code, nous devons apprendre à connaître certaines variables que nous pouvons utiliser à l'intérieur des scripts: ils sont la principale façon dont nous pouvons interagir avec l'état du gestionnaire de fichiers, accédant à des informations très utiles.



Variables de scripts Nautilus

Pour que nos scripts soient en quelque sorte utiles, il devrait être possible d'interagir avec l'état du gestionnaire de fichiers et de référencer, par exemple, le chemin d'accès et les noms des fichiers sélectionnés, ou le répertoire de travail actuel: nous pouvons accéder à ces informations via certaines Les variables définissent exactement à cet effet. Voyons-les.

Tout d'abord, nous avons le Nautilus_script_selected_file_paths variable. Comme cela devrait toujours arriver, le nom de la variable est assez explicite: cette variable contient le chemin complet du système de fichiers des fichiers actuellement sélectionnés dans le gestionnaire de fichiers. La valeur variable est une chaîne; Les chemins de fichier sont délimités par l'utilisation de nouvelle ligne personnages.

Une autre variable très utile est Nautilus_script_selected_uris. Nous pouvons utiliser cette variable, comme celle que nous venons de voir, pour faire référence à des fichiers sélectionnés, avec une différence: les fichiers ne sont pas référencés par leurs chemins, mais par leur Uri, ou «identifiant de ressources unifié». Le rôle de cette variable devient évident lorsque vous travaillez sur télécommande Systèmes de fichiers: dans ce cas, les chemins simples ne fonctionneront pas et le Nautilus_script_select_file_paths la variable sera vide. Dans de telles situations, pour accéder aux fichiers, nous devons également connaître le type de protocole utilisé: un fichier sélectionné dans le gestionnaire de fichiers via le SFTP Le protocole, par exemple, sera référencé comme sftp: // path / to / fichier.

Enfin, nous avons le Nautilus_script_current_uri et le Nautilus_script_window_geometry variables. Le premier contient le Uri du répertoire ouvert dans le manger de fichiers; Ces dernières informations sur la géométrie (largeur et hauteur) et la position de la fenêtre du gestionnaire de fichiers (par exemple: 631 × 642 + 26 + 23).

Un exemple pratique

Par exemple, nous créerons un script très simple: son objectif sera celui d'organiser des images sélectionnées dans le gestionnaire de fichiers à la base de leur date de création. Dans ce cas, le script sera écrit python, une langue prise en charge par défaut sur chaque distribution; Nous pouvons, bien sûr, écrire également des scripts bash ou utiliser tout autre langage de script pris en charge.

De nos jours, presque toutes les images numériques contient des métadonnées que nous pouvons utiliser pour récupérer toutes sortes d'informations, comme le type de caméra ou d'appareil utilisé pour créer l'image et les paramètres utilisés. Ce dont nous parlons est appelé exif Tags: ce qui nous intéresse dans ce cas, c'est le OriginalDateTime champ (36867). Le script sera en mesure d'organiser uniquement les images qui incluent cette balise, et les réorganisera dans les répertoires créés à l'aide du modèle «Nom de l'année / mois». Des images ne contenant aucune information seront placées dans un répertoire appelé «non trié». Voici notre script, nous le sauverons comme «Organiser.py ":

#!/ usr / bin / env python3 "" "Auteur: egidio docile organise des images sélectionnées par leur date de création, en utilisant la balise exif datetimeoriginal" "" Importer la datetime Importer le système d'exploitation de PIL Image DateTime_original = 36867 def Main (): Pour le chemin d'image dans le système d'exploitation.Getenv ('nautilus_script_selected_file_paths', ").splitlines (): essayez: exif_data = image.ouvert (chemin)._getExif () Sauf Oseror: Continuez à essayer: date = DateTime.DateTime.strptime (exif_data [datetime_original], '% y:% m:% d% h:% m:% s') répertoire = os.chemin.rejoindre (date.strftime ('% y'), date.strftime ('% b')) sauf (keyerror, valuerror, typeerror): répertoire = "non trié".Makedirs (répertoire, existe_ok = true) OS.Renommer (chemin, OS.chemin.jointer (répertoire, système d'exploitation.chemin.Basename (chemin))) si __name__ == '__main__': main ()
Copie

Comme vous pouvez le voir, nous accédons et lisons le Nautilus_script_selected_file_paths variable en utilisant le OS.GETENV Méthode, fournissant également une chaîne vide comme valeur par défaut, au cas où la variable n'est pas définie. Nous avons ensuite utilisé le lignes de scission Méthode pour «exploser» la chaîne qui est la valeur de la variable que nous venons de mentionner, dans une liste, en utilisant le caractère Newline comme délimiteur. Enfin, nous avons traité chaque chemin de fichier dans une boucle pour.



Bien sûr, le script peut être amélioré, mais vérifions qu'il fonctionne. Une fois que nous l'avons placé dans le ~ /.Local / Share / Nautilus / Scripts Répertoire, nous devons le rendre exécutable en fonctionnant:

$ chmod + x ~ /.Local / Share / Nautilus / Scripts / Organiser.py

Une nouvelle entrée doit apparaître dans le menu contextuel du gestionnaire de fichiers, lorsque les fichiers sont sélectionnés:



L'entrée de contexte pour notre script

Et voici notre script en action. Nous sélectionnons les images que nous voulons trier et cliquez sur «Script / Organinging.py ”dans le menu contextuel:

Utilisation des dialogues graphiques dans les scripts

Il peut y avoir certains cas dans lesquels nos scripts, pour fonctionner correctement, devraient être en mesure d'interagir avec l'utilisateur, peut-être pour demander une confirmation avant d'effectuer une opération. Nous pouvons créer de telles dialogues dans nos scripts, selon le langage de programmation que nous utilisons. Lors de l'écriture de scripts bash, par exemple, nous pouvons utiliser zénité, un programme à créer Gtk Boîtes de dialogue, qui sont généralement incluses avec une installation GNOME; Si ce n'est pas le cas, nous pouvons l'installer en utilisant notre gestionnaire de package de distribution préféré. Sur Fedora, par exemple, nous pouvons courir:

$ sudo dnf installer zenity

Sur les distributions basées sur Debian, nous pouvons plutôt utiliser APT-get:

$ sudo apt-get install zenity

Le package est également inclus dans les référentiels «supplémentaires» Archlinux:

$ sudo pacman -s zenity

Voyons un exemple sur la façon d'utiliser Zenity. Cette fois, nous écrire un script bash qui, lorsqu'il sera exécuté, sera en minuscules le nom de tous les fichiers sélectionnés, après avoir demandé et récepteur, la confirmation de l'utilisateur.

#!/ bin / bash set -e set -u set -o tuy-tufail if zenity --questtion - title = "confirmation" --text = "si j'exécute le script?"; alors echo" $ nautilus_script_selected_file_paths "| Pendant que vous lisez -r selecte
Copie

Dans le script que nous avons invoqué zénité avec le --question, --titre et --texte Options:
Ils sont utilisés respectivement, pour afficher un dialogue de questions, pour définir le titre de la fenêtre contextuelle qui sera affiché et pour définir le texte de dialogue réel. Dans ce cas, le code de sortie Zenity sera 0 si l'utilisateur clique sur «Oui» et 1 s'il clique sur le bouton «Non». Comme nous le savons, un code de sortie de 0 signifie que la commande a été exécutée avec succès, donc le code à l'intérieur de l'instruction IF sera exécuté. Pour minuscule le fichier, nous avons utilisé le $ paramètre ,, extension des paramètres.



Le dialogue Zenity

LoadPosition in-Article-Ads-Banner_31

Lorsque vous utilisez des langages de programmation plus sophistiqués comme Python, nous pouvons accéder à plusieurs types de bibliothèques graphiques, pour générer des dialogues, comme Tkinter qui est la boîte à outils de GUI de Python standard de facto, ou pygobject pour utiliser le Gtk boîte à outils et bibliothèques.

Conclusions

Dans ce tutoriel, nous avons vu comment, en quelques étapes faciles, nous pouvons étendre le gestionnaire de fichiers Nautilus à l'aide de scripts sur mesure écrits en différents types de langages de programmation. Nous avons vu où les scripts devraient être placés dans le système de fichiers, et quelles sont les variables que nous pouvons référencer en eux pour obtenir les chemins ou l'uri du fichier sélectionné, l'URI du répertoire ouvert dans le gestionnaire de fichiers et sa géométrie. Enfin, nous deux exemple, l'un écrit en python et l'autre en bash. Dans ce dernier, nous avons également vu comment générer un dialogue graphique en utilisant zénité: Si vous êtes curieux à propos de cet utilitaire, restez à l'écoute, nous en parlerons bientôt, ici sur LinuxConfig.org.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Fichiers de configuration Linux: 30 premiers
  • Comment écrire des extensions de nautilus avec nautilus-python
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Masterring Bash Script Loops
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Comment monter l'image ISO sur Linux
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…