[[Vorlage(Getestet, bionic, focal)]] {{{#!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(1)]] [[Bild(./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"''. = Installation eines Skripts für einen Benutzer = [[Bild(nautilus_scripts.png, 200, right)]] == Als Archiv vorliegend == Zunächst muss das Skript nach '''~/.local/share/nautilus/scripts/''' entpackt [4] und ausführbar gemacht [5] werden. Um das Skript zu verwenden, klickt man nun mit der rechten Maustaste [[Vorlage(Tasten, rmb)]] auf eine Datei, die das Skript verwenden soll, und wählt ''"Skripte -> SKRIPTNAME"''. == 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. Um das Skript zu verwenden, klickt man nun mit der rechten Maustaste auf eine Datei, die das Skript verwenden soll, und wählt ''"Skripte -> SKRIPTNAME"''. = Installation eines Skripts 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. = 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 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. Wenn man das Terminal im selektierten Ordner öffnen will, muss man die [#bergabe_an_das_Skript an das Skript übergebenen Informationen] auswerten: {{{#!code bash #! /bin/bash -e cat <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read Ordner do test -d "$Ordner" || continue gnome-terminal --working-directory="$Ordner" # break done }}} Wenn man mehrere Ordner auswählt, öffnet das Skript auch mehrere Terminal-Fenster. Wer dies nicht erwünscht, entferne das Kommentarzeichen vor `break`. In den offiziellen Paketquellen enthalten ist das Paket '''nautilus-open-terminal''', das die gleiche Funktionalität erfüllt (siehe [:Terminal#Integration-in-Nautilus:]). == 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. == Allgemein == * 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. == Falls Nautilus-Skripte nicht angezeigt werden == * Das Skript muss das Dateirecht [:Rechte#Datei-ausfuehrbar-machen:ausführbar] besitzen. = Links = * [sourceforge2:g-scripts:Projektseite] {en} # tag: GNOME 3, Unity, Dateimanager, Nautilus, Skript