So erweitern Sie den Gnome Nautilus -Dateimanager mit benutzerdefinierten Skripten

So erweitern Sie den Gnome Nautilus -Dateimanager mit benutzerdefinierten Skripten

Obwohl Gnom in seiner 3.X Iteration war aufgrund seines nicht-traditionellen Desktop-Paradigmas vieler Debatten, es ist wahrscheinlich der am häufigsten verwendete Desktop unter Linux. Der in GNOME enthaltene Standarddateimanager ist Nautilus (der neue Name der Anwendung lautet "Dateien"). In diesem Tutorial sehen wir, wie wir den Dateimanager mit Funktionen von benutzerdefinierten Skripten erweitern können.

In diesem Tutorial lernen Sie:

  • So verwenden Sie benutzerdefinierte Skripte, um Nautilus -Funktionen zu erweitern


Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilungsunabhängige
Software Der Nautilus -Dateimanager
Andere Es sind keine spezifischen Anforderungen erforderlich, um diesem Tutorial zu folgen
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Erstellen des Skriptverzeichnisses

Das erste, was wir tun möchten, ist, das Verzeichnis zu erstellen, in dem unsere Skripte gehostet werden: ~/.Lokal/Share/Nautilus/Skripte. Sobald in diesem Verzeichnis platziert ist, werden die Skripte automatisch im Menü Nautilus -Kontext angezeigt, das angezeigt wird, wenn wir eine oder mehrere Dateien auswählen:

$ mkdir -p ~/.Lokal/Share/Nautilus/Skripte

Im obigen Befehl haben wir die verwendet -P wechseln (kurz für --Eltern) Um sicher zu sein, dass alle Verzeichnisse im angegebenen Pfad nach Bedarf erstellt werden und keine Fehler generiert werden, wenn einige von ihnen bereits vorhanden sind. Mit unserem Verzeichnis können wir an unseren sehr nützlichen Skripten arbeiten: Beachten Sie, dass sie nur dann korrekt im Menü Nautilus Context enthalten sind ausführbar. Vor dem Schreiben von Code sollten wir lernen, einige Variablen kennenzulernen, die wir in den Skripten verwenden können.



Nautilus -Skripte Variablen

Damit unsere Skripte irgendwie nützlich sind, sollte es möglich sein, mit dem Dateimanager -Status zu interagieren und in der Lage zu sein, beispielsweise auf den Pfad und die Namen ausgewählter Dateien oder das aktuelle Arbeitsverzeichnis zu verweisen: Wir können diese Informationen über einige über einige zugreifen Variablen genau für diesen Zweck festlegen. Mal sehen, sie.

Erstens haben wir das Nautilus_script_selected_file_paths Variable. Der Variablenname ist wie immer ziemlich selbsterklärend: Diese Variable enthält den vollständigen Dateisystempfad der derzeit im Dateimanager ausgewählten Dateien. Der variable Wert ist eine Zeichenfolge; Die Dateipfade werden durch die Verwendung von abgrenzt Neue Zeile Figuren.

Eine andere sehr nützliche Variable ist Nautilus_script_selected_uris. Wir können diese Variable wie die, die wir gerade gesehen haben, verwenden, um ausgewählte Dateien zu verweisen, mit einem Unterschied: Die Dateien werden nicht von ihren Pfaden verwiesen, sondern auf ihre Uri, oder "Unified Resource Identifier". Die Rolle dieser Variablen wird bei der Arbeit an der Arbeit erkennbar Fernbedienung Dateisysteme: In diesem Fall funktionieren einfache Pfade nicht und die Nautilus_script_select_file_paths Variable ist leer. In solchen Situationen müssen wir auch die verwendeten Protokolltypen kennen, um auf die Dateien zugreifen zu können sftp Das Protokoll zum Beispiel wird als bezeichnet als sftp: // path/to/Datei.

Schließlich haben wir das Nautilus_script_current_uri und das Nautilus_script_window_geometry Variablen. Ersteres enthält die Uri des in der Dateikrippe geöffneten Verzeichnisses; Die letztgenannten Informationen über die Geometrie (Breite und Höhe) und die Position des Dateimanagerfensters (zB: 631 × 642+26+23).

Ein praktisches Beispiel

Als Beispiel werden wir ein sehr einfaches Skript erstellen. In diesem Fall wird das Skript in geschrieben Python, eine Sprache, die bei jeder Verteilung standardmäßig unterstützt wird; Wir können natürlich auch Bash -Skripte schreiben oder eine andere unterstützte Skriptsprache verwenden.

Heutzutage enthalten fast alle digitalen Bilder Metadaten, mit denen wir alle Arten von Informationen abrufen können, z. Worüber wir sprechen, heißt exif Tags: Was uns in diesem Fall interessiert, ist das OriginalDatetime Feld (36867). Das Skript kann nur die Bilder organisieren, die dieses Tag enthalten, und wird sie in Verzeichnissen neu ordnen, die mit dem Muster „Jahr/Monat Name“ erstellt wurden. Bilder, die keine Informationen enthalten, werden in einem Verzeichnis namens "Unsortiert" platziert. Hier ist unser Skript, wir werden es als „organisieren.py ”:

#!/usr/bin/env python3 "" "Autor: Egidio doartile organisieren ausgewählte Bilder nach ihrem Erstellungsdatum mit dem exif datetimeoriginal Tag" "" "" DateTime importieren OS importieren von PIL Import Import Import DateTime_Original = 36867 DEF Main (): für Pfad in OS in OS in OS.getenv ('nautilus_script_selected_file_paths', ")).Splitlines (): Versuchen Sie: exif_data = Bild.offen (Pfad)._getExif () außer oserrror: Weiter versuchen.Terminzeit.STRPTIME (exif_data [datetime_original], '%y:%m:%d%h:%m:%s') Verzeichnis = OS.Weg.Beitrittsdatum.Strftime ('%y'), Datum.strftime ('%b') außer (keyError, valueError, typeerror): Verzeichnis = "ungesortiert" OS.Makedirs (Verzeichnis, exist_ok = true) os.umbenennen (Pfad, Betriebssystem.Weg.beitreten (Verzeichnis, Betriebssystem.Weg.Grundname (Pfad))) Wenn __name__ == '__main__': main ()
Kopieren

Wie Sie sehen können, greifen wir auf und lesen wir auf die Nautilus_script_selected_file_paths Variable mit dem Betriebssystem.Getenv Methode, die auch eine leere Zeichenfolge als Standardwert bereitstellt, falls die Variable nicht festgelegt ist. Wir haben dann das benutzt Splitlinien Methode zum „explodieren“ den String, der den Wert der gerade erwähnten Variablen ist, in eine Liste mit dem Newline -Zeichen als Trennzeichen verwendet. Schließlich haben wir jeden Dateipfad in a for Loop verarbeitet.



Natürlich kann das Skript verbessert werden, aber überprüfen wir, ob es funktioniert. Sobald wir es in die platzieren ~/.Lokal/Share/Nautilus/Skripte Verzeichnis, wir müssen es ausführbar machen, indem wir ausführen:

$ chmod +x ~//.Lokal/Share/Nautilus/Skripte/Organisieren.py

Ein neuer Eintrag sollte im Menü "Dateimanager" angezeigt werden, wenn Dateien ausgewählt werden:



Der Kontext-Menuseintrag für unser Skript

Und hier ist unser Skript in Aktion. Wir wählen die Bilder aus, die wir sortieren und klicken auf „Skript/organisieren“.py ”im Kontextmenü:

Verwenden Sie grafische Dialoge in den Skripten

Es kann einige Fälle geben, in denen unsere Skripte, die korrekt funktionieren. Wir können solche Dialoge in unseren Skripten erstellen, abhängig von der von uns verwendeten Programmiersprache. Beim zum Beispiel zum Schreiben von Bash -Skripten können wir zum Beispiel verwenden Zenität, ein Programm zum Erstellen Gtk Dialogfelder, die normalerweise in einer Gnome -Installation enthalten sind; Wenn dies nicht der Fall ist, können wir es mit unserem bevorzugten Vertriebspaketmanager installieren. Auf Fedora können wir zum Beispiel rennen:

$ sudo dnf Installieren Sie Zenity

Auf Debian-basierten Verteilungen können wir stattdessen APT-Get verwenden:

$ sudo apt-Get Installieren Sie Zenity

Das Paket ist auch in den „zusätzlichen“ Erzlinux -Repositories enthalten:

$ sudo pacman -s zenity

Lassen Sie uns ein Beispiel sehen, wie Zenity verwendet wird. Dieses Mal schreiben wir ein Bash -Skript, das bei der Ausführung den Namen aller ausgewählten Dateien nach der Befragung und Empfangen der Benutzerbestätigung in Kleinbuchstaben verabschiedet wird.

#!/bin/bash set -e set -u set -o pipefail Wenn Zenity -Frage -Title = "Bestätigung" --Text = "sollte ich das Skript ausführen?"; dann echo" $ nautilus_script_selected_file_paths "| while read -r selected_file; do file =" $ (BasisName "$ selected_file") "mv" $ file "
Kopieren

In dem Drehbuch, das wir angerufen haben Zenität mit dem --Frage, --Titel Und --Text Optionen:
Sie werden jeweils verwendet, um einen Fragendialog anzuzeigen, den Titel des Popup -Fensters festzulegen, das angezeigt wird, und um den tatsächlichen Dialogtext festzulegen. In diesem Fall beträgt der Zenity Exit -Code 0, wenn der Benutzer auf "Ja" und 1 klickt, wenn er auf die Schaltfläche "Nein" klickt. Wie wir wissen, bedeutet ein Exit -Code von 0, dass der Befehl erfolgreich ausgeführt wurde. Daher wird der Code in der IF -Anweisung ausgeführt. Zum Kleinbuchstaben haben wir die verwendet $ Parameter ,, Parameterausdehnung.



Der Zenity -Dialog

LoadPosition In-Article-Ads-Banner_31

Wenn wir anspruchsvollere Programmiersprachen wie Python verwenden, können wir auf verschiedene Arten von grafischen Bibliotheken zugreifen, um Dialoge zu generieren, z Gtk Toolkit und Bibliotheken.

Schlussfolgerungen

In diesem Tutorial haben wir gesehen, wie wir in wenigen einfachen Schritten den Nautilus -Dateimanager mit benutzerdefinierten Skripten erweitern können, die in verschiedenen Arten von Programmiersprachen geschrieben wurden. Wir haben gesehen. Schließlich wir zwei Beispiele, einer in Python und den anderen in Bash geschrieben. In letzterem haben wir auch gesehen, wie man einen grafischen Dialog verwendete Zenität: Wenn Sie neugierig auf dieses Dienstprogramm sind, bleiben Sie dran, wir werden bald darüber sprechen, hier unter Linuxconfig.Org.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Wie man Nautilus-Erweiterungen mit Nautilus-Python schreibt
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mastering -Bash -Skriptschleifen beherrschen
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • So montieren Sie das ISO -Bild unter Linux
  • Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…