[[Vorlage(Getestet, noble)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Packprogramme: Archive entpacken] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis()]] [[Bild(Nautilus/nautilus_logo.png, 48, align=left)]] Man kann den Dateimanager [:Nautilus:] durch Skripte erweitern. Diese Skripte sind einfache ausführbare Dateien, z.B. Shell-Skripte. Sie werden im Verzeichnis '''~/.local/share/nautilus/scripts/''' gespeichert und erweitern das Kontext-Menü um den neuen Punkt ''"Skripte"''. = Skript installieren = == Installation für einen Benutzer == === Als Archiv vorliegend === Zunächst muss das Skript nach '''~/.local/share/nautilus/scripts/''' entpackt[4] und ausführbar gemacht[5] werden. === Als Datei vorliegend === Falls das Skript auf einer Webseite vorliegt, markiert man den Text des Skripts und kopiert diesen in einen Editor[3]. Das Skript speichert man dann als '''~/.local/share/nautilus/scripts/SKRIPTNAME''' ab und macht die Datei ausführbar. == Installation für alle Benutzer == Man hinterlegt das entpackte und für alle Benutzer lesbare und ausführbare Skript in einem Verzeichnis, welches auch für alle Benutzer lesbar und durchsuchbar sein muss (Berechtigungen: `rwxr-xr-x` bzw. 755). Nautilus sieht hierfür selbst keinen besonderen Ort vor. Man kann z.B. als `root` ein Verzeichnis '''/home/Austausch/Skripte/''' anlegen. Jeder Benutzer, der das Skript verwenden möchte, legt dann selbst im eigenen Benutzerverzeichnis im Ordner '''~/.local/share/nautilus/scripts/''' [:ln: einen Hard- oder Softlink] zum gemeinsamen Skript an. = Skript benutzen = [[Bild(nautilus_scripts.png, 200, right)]] Man arbeitet ganz normal mit dem Dateimanager und * wählt entweder durch einen Klick mit der rechten Maustaste [[Vorlage(Tasten, rmb)]] eine Datei aus, * oder man markiert zuerst mit den Tasten [[Vorlage(Tasten, strg+lmb)]] mehrere Dateien bzw. Ordner und klickt danach mit der rechten Maustaste [[Vorlage(Tasten, rmb)]] einen ausgewählten Eintrag an. In dem sich öffnenden Menü wählt man ''"Skripte -> SKRIPTNAME"''. Je nach Version von Nautilus kann man dabei die Menüpunkte durch reines Zeigen aktivieren oder man muss doch klicken. = Beispiele = Weitere erwähnenswerte Skripte können gerne ergänzt werden. == Fertige Skripte == Einige nützliche fertige Skripte: * [:Nautilus/Skripte/PDF-Konvertierung:PDF-Konvertierung] - Bilder in PDF-Dateien umwandeln, PDF-Dokumente vereinen * [:Nautilus/Skripte/PDF-Komprimierung:PDF-Komprimierung] - die Dateigröße von PDF-Dateien optimieren * [:Nautilus/Skripte/Splitten_und_Vereinigen:Splitten und Vereinigen] - Dateien in Nautilus in mehrere Dateien teilen und zusammenfügen * [:Nautilus/Skripte/Symbolischer_Link:Symbolischer Link] - einen symbolischen Link über das Kontextmenü bearbeiten * [:Nautilus/Skripte/Volltextsuche:Volltextsuche] - Volltextsuche in Dateien * [:Skripte/exifotocopy:ExiFotoCopy] - Bilder/Fotos von einem externen Datenträger (MMC/SD) oder einer Digitalkamera auf ein anderes Speichermedium kopieren, skalieren und nach den Exif-Informationen (z.B. Aufnahmedatum) in eine Ordnerstruktur einsortieren * [:Nautilus/Skripte/SMBsession:SMBsession] - mit Nautilus Samba-Freigaben ohne Verwendung des alten / unsicheren Protokolls SMBv1 durchsuchen * [:Nautilus/Skripte/SMBusershare:SMBusershare] - ohne Root-Rechte Ordner über Nautilus (und Thunar) freigeben * [:Nautilus/Skripte/Gnupg:Gnupg] - Standard-[:GnuPG:]-Operationen mit Nautilus ausführen Weitere Anregungen sind unter [:Skripte:] zu finden. == GNOME-Terminal öffnen == Die Datei '''~/.local/share/nautilus/scripts/Terminal''' mit einem Editor[3] anlegen: {{{#!code bash #!/bin/bash gnome-terminal }}} Es öffnet sich das GNOME-Terminal direkt in dem Verzeichnis, in dem man sich gerade befindet. Das ist noch nicht das, was man erreichen wollte. Wenn man das Terminal im selektierten Ordner öffnen will, muss man die [#Parameteruebergabe-an-das-Skript an das Skript übergebenen Informationen] auswerten: {{{#!code bash #! /bin/bash -e for Ordner do test -d "$Ordner" || continue gnome-terminal --working-directory="$Ordner" done }}} Wenn man mehrere Ordner auswählt, öffnet das Skript auch mehrere Terminal-Fenster. In dieser verbesserten Variante werden die ausgewählten Dateien als Programmargumente `$1`, `$2` … übergeben, das nächste Beispiel verwendet eine andere Methode. Außerdem prüft das Skript, ob es sich um einen Ordner handelt und ignoriert anderenfalls den Namen. In den offiziellen Paketquellen enthalten ist das Paket '''nautilus-extension-gnome-terminal''', das die gleiche Funktionalität erfüllt. == Datei datiert kopieren == Oft möchte man beim Arbeiten an einer Datei den Stand vor der weiteren Bearbeitung schnell sichern und erfindet dann Dateinamen wie '''config alt''' oder '''config backup'''. Sinnvoller wäre eine Kennzeichnung mit dem aktuellen Zeitpunkt wie '''config 2020-06-07'''. Das hier vorgestellte Skript implementiert hierfür eine bequeme Bedienung als Nautilus-Skript. {{{#!code bash #! /bin/bash -e # nautlius helper script # ~/.local/share/nautilus/scripts/'Datei datiert kopieren' # Erzeugt Dateikopie mit angehängtem Datum im Dateinamen. # Copy file and add date to its name. # SPDX-License-Identifier: GPL-2.0-or-later # (c) Copyright 2020 kB @ ubuntuusers.de separator=' - ' while read FILE do test -f "$FILE" || continue for FMT in date minutes seconds do COPY=$(date --iso=$FMT) ; COPY=${COPY/T/$separator} COPY=${FILE}$separator${COPY/+??:00/} ! test -e "$COPY" || continue cp "$FILE" "$COPY" ; break done done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" }}} Wenn man diesen Mechanismus mehrmals am Tag benutzt, wird zusätzlich zum Datum noch die Uhrzeit hinzugefügt, nötigenfalls bis zur Sekunden-Auflösung. == Datei(en) in Audacious-Playliste hinzufügen == Mit diesem Skript kann man eine oder auch mehrere Datei(en) zur Wiedergabeliste von [:Audacious:] hinzufügen. Dateiname: '''~/.local/share/nautilus/scripts/Audacious-Wiedergabeliste''' {{{#!code bash #!/bin/bash for FILE in "$@"; do audacious -e "$FILE" done }}} = Skript-Verwaltung = Ab Ubuntu 18.04 kann man als grafische Oberfläche zur Verwaltung, Erstellung und Bearbeitung von benutzerdefinierten Nautilus-Skripten das Werkzeug [:FileManager-Actions:FileManager-Actions] verwenden. = Skripte selbst schreiben = Sollte man vorhaben, selbst Skripte für Nautilus zu entwickeln und hier im Wiki zu veröffentlichen, hier noch ein paar Empfehlungen. == Allgemeine Hinweise == * Skripte sollten als '''tar.gz'''- oder '''tar.bz2'''-Paket vorliegen. * Nach Möglichkeit sollten als Skriptsprachen nur [:Bash:] und [:Python:] verwendet werden. * Externe Programme sollten so wenig wie möglich verwendet werden. Benötigt man Programme, die nicht vorinstalliert sind, so sollten sie über das Paketmanagement verfügbar sein. Das gleiche gilt für Bibliotheken oder Python-Module. * Die Art der Skripte sollte für Nautilus ohne Dateiendung erkennbar sein. Dies ist zum Beispiel durch den Shebang `#!/bin/sh` bei Shell-Skripten möglich. * Die Namen der Skripte sollten eindeutig sein, zum Beispiel '''Bild rechts drehen'''. * Die meisten Skripte sollten eine graphische Rückgabe ihrer Arbeit liefern. Hierzu eignet sich zum Beispiel [:Zenity:]. * Unterstützung für mehrere übergebene Dateien, Ordner und Dateien mit Leer- oder Sonderzeichen im Namen == Parameterübergabe an das Skript == Nautilus gibt beim Aufruf eines Skripts einige wichtige Informationen als Umgebungsvariablen an das Skript weiter. ||<-2 cellstyle="background-color: #DDDDDD; text-align: center;">Erweiterte Parameter (Umgebungsvariablen)|| ||NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ||Pfade der gewählten Dateien, die durch eine neue Zeile getrennt werden (falls lokal)|| ||NAUTILUS_SCRIPT_SELECTED_URIS||URIs der ausgewählten Dateien. Auch durch eine neue Zeile getrennt|| ||NAUTILUS_SCRIPT_CURRENT_URI||URI des aktuellen Orts|| ||NAUTILUS_SCRIPT_WINDOW_GEOMETRY||Position und Größe des aktuellen Fensters|| * Bei lokalen Orten werden zusätzlich die markierten Dateien oder Verzeichnisse als Argumente für das Skript gesetzt. Jedoch werden nur die Dateinamen innerhalb des Ordners, nicht die absoluten Pfade übergeben! Das bedeutet, das Skript wird wie folgt aufgerufen: [[Vorlage(Befehl, '~/.local/share/nautilus/scripts/Skriptname ... ' )]] * Bei Orten im Netzwerk (z.B. per FTP, SSH, SMB) kann `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS` und auch die Argumentliste leer sein. = Problembehebung = == Skript wird nicht angezeigt == * Das Skript muss das Dateirecht [:Rechte#Datei-ausfuehrbar-machen:ausführbar] besitzen. == Skript wird nicht ausgeführt == In der Regel sind das Syntaxfehler im Skript. Man starte das Skript im Terminal[2]. Wenn eine Fehlermeldung erscheint, verbessere man den Quelltext bis das Programm fehlerfrei durchläuft. = Links = * [sourceforge2:g-scripts:Projektseite] {en} # tag: Nautilus, Skript