[[Vorlage(archiviert)]] {{{#!vorlage Wissen [:.desktop-Dateien: Einen Programmstarter erstellen] [:Editor: Einen Editor öffnen] [:Pakete_installieren:Installation von Programmen] optional [:Terminal: Ein Terminal öffnen] optional [:Rechte: Rechte für Dateien und Ordner ändern] optional }}} [[Inhaltsverzeichnis(1)]] [[Bild(./pcmanfm_logo.png, 48, align=left)]] Benutzerdefinierte Aktionen erweitern die Funktionalität des Dateimanagers [:PCMan_File_Manager:] und werden im Kontextmenü [[Vorlage(Tasten, rmb)]] angezeigt. Das erlaubt den schnellen Zugriff auf diverse Kommandos und Programme direkt aus dem Dateimanager heraus. In Kombination mit Skripten hat man mit dieser Funktion quasi unbegrenzte Möglichkeiten. Allerdings stehen diese benutzerdefinierten Aktionen erst ab der Version 1.2 oder neuer zur Verfügung. = Grundlagen = * Die verwendeten Dateien sind inhaltlich eine Erweiterung der klassischen '''.desktop'''-Dateien (Programmstarter) [1]. Sie müssen daher zwingend die Endung '''.desktop''' besitzen, während der Dateiname keine Rolle spielt und frei wählbar ist. * Dateien mit Aktionen müssen zwingend im Ordner '''~/.local/share/file-manager/actions/''' im [:Homeverzeichnis:] gespeichert werden Das Grundgerüst folgt dem Schema DES-EMA und ähnelt den von Unity/GNOME 3 verwendeten [:.desktop-Dateien/Quicklists:Quicklists] (Jumplists) bzw. den [:KDE-Servicemenüs:Servicemenü-Einträgen] bei KDE. Es besteht aus den beiden Abschnitten `[Desktop Entry]` und `[X-Action-Profile PROFILNAME]`. Die wichtigsten Einträge sind hier in der Form `SCHLÜSSEL=WERT` angegeben: {{{ [Desktop Entry] Type=Action Name=ENGLISCHE BESCHREIBUNG Name[de]=DEUTSCHE BESCHREIBUNG Icon=SYMBOLDATEI Tooltip=TEXT Profiles=PROFILNAME; [X-Action-Profile PROFILNAME] MimeTypes=MIME-TYP Exec=BEFEHL Name=BESCHREIBUNG }}} {{{#!vorlage Tabelle <-2 tableclass="zebra_start3" tablestyle="width: 95%;" rowclass="titel"> Erläuterung +++ Element Beschreibung +++ `Type=Action` Beschreibt den Typ (obligatorisch). Klassische Programmstarter verwenden dagegen `Type=Application`. +++ `Name=BESCHREIBUNG` Text, der angezeigt werden soll. Für Übersetzungen wird in einer weiteren Zeile der Ländercode in eckigen Klammern angegeben. +++ `Icon=PFAD/ZUR/SYMBOLDATEI` Legt ein Bild fest, das angezeigt werden soll (optional) +++ `Tooltip=TEXT` sorgt für die Anzeige eines [wikipedia:Tooltip:] (funktioniert nicht bei Lubuntu 14.04) +++ `Profiles=PROFILNAME;` Verweist auf den nächsten Abschnitt. Name frei wählbar, aber ohne Leerzeichen. Je nach Bedarf können auch mehrere Profile mit unterschiedlichen Aktionen definiert werden. +++ <-2 rowclass="kopf"> +++ `[X-Action-Profile PROFILNAME]` Beschreibt das Profil und die durchzuführende/n Aktion/en. `PROFILNAME` entspricht der Bezeichnung aus `PROFILES=`. +++ `MimeTypes=MIME-TYP` Bei welchem [:MIME-Typ:Dateityp] die Aktion angezeigt werden soll. Es können auch mehrere Dateitypen nach dem Muster `TYP;TYP;TYP;` angegeben werden. Praxisrelevant sind noch die Varianten `all/allfiles` für alle Dateien und `inode/directory` für Ordner. +++ `Exec=BEFEHL` Befehl, der ausgeführt werden soll, wenn dieses Element ausgewählt wird. +++ `Name=BESCHREIBUNG` Weitere Beschreibung. Wird nicht angezeigt, kann aber zur internen Dokumentation genutzt werden. }}} = Beispiele = Hier ein paar Beispiele für benutzerdefinierte Aktionen. Zum Erstellen kann ein beliebiger Editor [2] verwendet werden. {{{#!vorlage Hinweis Nach dem Hinzufügen neuer oder Ändern bestehender Aktionen müssen alle Instanzen von PCManFM beendet und neu gestartet werden. Für [:Lubuntu:] ist dazu z.B. im [:Terminal:] einzugeben: {{{#!vorlage Befehl killall pcmanfm ; pcmanfm --desktop --profile lubuntu & \}}} Alternativ kann man sich ab- und wieder neu anmelden. }}} [[Vorlage(Bildunterschrift, ./pcmanfm_kontextmenu.png, 290, "Ausgewählten Ordner mit Root-Rechten öffnen", right,)]] == Ordner mit Root-Rechten öffnen == Diese Aktion ist besonders nützlich, da der Menüpunkt ''"Werkzeug -> Aktuellen Ordner als Root öffnen"'' in PCManFM nicht mehr vorhanden ist. Da ab [:Saucy:Ubuntu 13.10] auch der erforderliche Befehl '''gksudo''' fehlt, benötigt man noch folgendes Paket [3]: {{{#!vorlage Paketinstallation gksu, universe, bis [:16.04:] }}} * '''~/.local/share/file-manager/actions/open_as_root.desktop''': {{{ [Desktop Entry] Type=Action Tooltip=Open Folder As Root Name=Open Folder As Root Name[de]=Ordner mit Root-Rechten öffnen Icon=gtk-dialog-authentication Profiles=on_folder; [X-Action-Profile on_folder] MimeTypes=inode/directory; Exec=/usr/bin/gksudo /usr/bin/pcmanfm %u Name=replacement for missing function }}} == Datei via E-Mail versenden == Das hier beschriebene Beispiel setzt [:Thunderbird:] voraus. Es kann auch für andere E-Mail-Programme genutzt werden, wenn die Zeile `Exec=...` entsprechend angepasst wird. * '''~/.local/share/file-manager/actions/send_as_attachment.desktop''': {{{ [Desktop Entry] Type=Action Name=Send as attachment Name[de]=Als Anhang versenden Icon=stock_mail-compose Tooltip=Als Anhang versenden Profiles=as_attachment; [X-Action-Profile as_attachment] MimeTypes=all/allfiles; Exec=thunderbird -compose attachment=%f Name=Als Anhang versenden }}} Für [:Claws_Mail:] lautet die `Exec=...`-Zeile entsprechend {{{ Exec=claws-mail --compose --attach %U }}} Für [:Sylpheed:] ist einzutragen {{{ Exec=sylpheed --attach %F }}} == Als Hintergrundbild setzen == Um schnell ausprobieren zu können, wie ein bestimmtes Bild als Desktop-Hintergrund aussehen würde, kann man folgende Aktion verwenden. Zurücksetzen muss man den Hintergrund über die [:LXDE_Einstellungen#Desktop:]. * '''~/.local/share/file-manager/actions/set_as_wallpaper.desktop''': {{{ [Desktop Entry] Type=Action ToolbarLabel=Set As Wallpaper ToolbarLabel[de]=Als Hintergrundbild Name=Set As Wallpaper Name[de]=Als Hintergrundbild setzen Icon=gtk-orientation-landscape Profiles=on_image; [X-Action-Profile on_image] MimeTypes=image/*; Exec=pcmanfm -w %f Name=only if pcmanfm is used for desktop management Name[de]=funktioniert nur, wenn PCManFM den Desktop verwaltet }}} == Dokumente drucken == Um ODT- und DOC- bzw. PDF-Dateien auf dem Standard-Drucker ausdrucken zu können, werden zwei getrennte Aktionen verwendet. * '''~/.local/share/file-manager/actions/sendto_printer.desktop''': {{{ [Desktop Entry] Type=Action Name=Print Document Name[de]=Dokument drucken Icon=printer Profiles=Office;Text_PDF; [X-Action-Profile Office] MimeTypes=application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/msword;application/vnd.oasis.opendocument.text; Exec=libreoffice --headless -p %f Name[de]=Officedateien drucken [X-Action-Profile Text_PDF] MimeTypes=text/plain;application/pdf; Exec=lp %f Name[de]=PDF- u. Textdruck }}} == PDF aus LaTeX Dateien erzeugen == Um aus [:LaTeX:]-Dateien PDF-Dateien zu erzeugen und anzuzeigen * '''~/.local/share/file-manager/actions/pdflatex.desktop''': {{{ [Desktop Entry] Type=Action Name=pdflatex Name[de]=pdflatex Icon=application-pdf Profiles=pdflatex; [X-Action-Profile pdflatex] MimeTypes=text/x-tex Exec=bash -c 'pdflatex -jobname "$(basename %f .tex)" -output-directory "$(dirname %f)" %f ; xdg-open "$(dirname %f)"/"$(basename %f .tex)".pdf' Name[de]=pdflatex ausführen und Ergebnis anzeigen }}} Für die Verwendung bei Dateinamen mit Leerzeichen, muss der Befehl in ein Skript ausgelagert werden. In der Zeile `Exec=` wird dann der Pfad zu folgendem Skript eingetragen. {{{#!code bash #!/bin/bash ## Skript tex2pdf - Latex-Dateien in PDF umwandeln und anzeigen pdflatex -jobname "$(basename "$1" .tex)" -output-directory "$(dirname "$1")" "$1" xdg-open "$(dirname "$1")"/"$(basename "$1" .tex)".pdf }}} == Zu Audacious hinzufügen == Da [:Audacious:] bei Lubuntu als Standard-Audioplayer eingesetzt wird (und daher keine eigene Aktion zum Abspielen benötigt wird), fügt die folgende Aktion MP3- und OGG-Dateien zur Wiedergabeliste hinzu. Weitere Audioformate können in der Zeile `MimeTypes=` ergänzt werden. * '''~/.local/share/file-manager/actions/add2audacious.desktop''': {{{ [Desktop Entry] Type=Action Tooltip=Add to playlist Tooltip[de]=Zu Wiedergabeliste hinzufügen Name=Enqueue to Audacious Name[de]=Zur Audacious-Playliste hinzufügen Icon=audacious Profiles=on_audio; [X-Action-Profile on_audio] MimeTypes=audio/mpeg;audio/ogg; Exec=audacious -e %F Name=add once, play later... }}} == Papierkorb leeren == Mit Lubuntu 14.04 ist es möglich, via ''"Einstellungen -> Desktop-Einstellungen -> Desktop-Symbole"'' ein Symbol für den [:Papierkorb:] auf dem Desktop anzuzeigen. Aber leider lässt sich der so sichtbar gewordene Papierkorb nicht wie gewohnt über das Kontextmenü [[Vorlage(Tasten, rmb)]] löschen. Um diese Funktion nachzurüsten, muss folgendes Paket installiert werden: {{{#!vorlage Paketinstallation trash-cli, universe }}} * '''~/.local/share/file-manager/actions/empty_trash.desktop''': {{{ [Desktop Entry] Type=Action Name=Empty Trash Name[de]=Papierkorb leeren Icon=user-trash Profiles=on_trash; [X-Action-Profile on_trash] MimeTypes=inode/directory; Basenames=trash:/// Exec=/usr/bin/trash-empty Name=clear user trash folder }}} == Dateien sicher löschen == Für diese Aufgabe werden die beiden folgenden Programme und ein Shell-Skript benötigt. {{{#!vorlage Paketinstallation wipe, universe zenity, universe }}} Das Shell-Skript: {{{#!code bash #!/bin/bash zenity --question --title="Sicher löschen" --text="Diese Dateien/Ordner entgültig löschen?\n\nHinweis: Keine Wiederherstellung möglich!"; if [ $? != 1 ]; then param=$#; zaehler=0; fcnt=1; ( while [ "$zaehler" != $param ] do status=`expr $fcnt - 1`; echo $(($status*100/$param)) ; echo "# Lösche: $1" ; wipe -f -q -Q 1 -R /dev/zero -S r -r "$1"; echo $(($fcnt*100/$param)) ; echo "# Gelöscht: $1" ; shift fcnt=`expr $fcnt + 1`; zaehler=`expr $zaehler + 1`; done ) | zenity --progress \ --title="Sicher löschen" \ --text="Initialisiere..." \ --percentage=0 \ --auto-close fi }}} Das Skript erzeugt mittels [:Zenity:] eine Sicherheitsabfrage und einen Fortschrittsbalken (nur bei mehreren Dateien und/oder Ordnern) und schließt das Warnfenster nach erfolgreichem Löschen automatisch. Man speichert es beispielsweise als '''~/bin/pcmanfm_secure_delete.sh''' und setzt die Ausführrechte [4][5]: {{{#!vorlage Befehl chmod u+x ~/bin/pcmanfm_secure_delete.sh }}} Nun fehlt noch der Inhalt der Datei für diese Aktion (`BENUTZERNAME` bzw. Speicherort/Name des Skripts bitte anpassen): {{{ [Desktop Entry] Type=Action Tooltip= Name=Secure delete Name[de]=Sicher löschen Icon=gtk-dialog-warning Profiles=on_wipe; [X-Action-Profile on_wipe] MimeTypes=all/allfiles;inode/directory; Exec=/home/BENUTZERNAME/bin/pcmanfm_secure_delete.sh %F Name=external script required }}} Dabei werden die zu löschenden Dateien und Ordner zunächst mit Nullen überschrieben und dann gelöscht. == Netzwerkfreigaben == {{{#!vorlage Warnung Aus Sicherheitsgründen sollte niemals das eigene Homeverzeichnis freigegeben werden, sondern nur ein einzelner Ordner innerhalb des Homeverzeichnisses. Dazu bietet sich beispielsweise der bereits vorhandene Ordner '''~/Öffentlich/''' an. }}} Grundlage ist die Kenntnis des Artikels [:Samba_Server/net_usershare:net usershare]. Dabei handelt es sich um die "persönliche Freigabe" eines Ordners im eigenen [:Homeverzeichnis:], die nicht mit einer systemweiten Freigabe verwechselt werden sollte (siehe [:Samba_Server_GNOME:]) – auch wenn sie praktisch die gleiche Funktionalität bietet. Außerdem muss man vorab dafür sorgen, dass 1. der Zugriff auf das eigene Homeverzeichnis überhaupt möglich ist und 1. die Rechte des Ordners, der später freigegeben werden soll, anpassen. Dazu dienen folgende Befehle im Terminal: {{{#!vorlage Befehl chmod 755 $HOME chmod 777 $HOME/ORDNERNAME }}} === Netzwerkfreigaben erstellen === * '''~/.local/share/file-manager/actions/create_share.desktop''': {{{ [Desktop Entry] Type=Action Name=Create Network Share Name[de]=Netzwerkfreigabe erstellen Icon=gtk-connect Profiles=create_share; [X-Action-Profile create_share] MimeTypes=inode/directory; Exec=net usershare add %w %f "" Everyone:F guest_ok=y }}} Möchte man keinen Vollzugriff erlauben, sondern nur Leserechte erteilen, ändert man die letzte Zeile wie folgt ab: {{{ Exec=net usershare add %w %f "" Everyone:R guest_ok=y }}} === Netzwerkfreigaben entfernen === * '''~/.local/share/file-manager/actions/remove_share.desktop''': {{{ [Desktop Entry] Type=Action Name=Remove Network Share Name[de]=Netzwerkfreigabe entfernen Icon=gtk-disconnect Profiles=remove_share; [X-Action-Profile remove_share] MimeTypes=inode/directory; Exec=net usershare delete %w }}} = Nautilus-Actions Configuration Tool = Wem bei der Lektüre manches sehr vertraut vorkommt, ist auf der richtigen Spur: auch der Dateimanager [:Nautilus:] verwendet benutzerdefinierte Aktionen, die als "Nautilus-Aktionen" bezeichnet werden. Für LXDE/Lubuntu ist folgendes Paket – trotz des irreführenden Namens – interessant: {{{#!vorlage Paketinstallation nautilus-actions, universe }}} Mit dem enthaltenen Programm [:Archiv/Nautilus-Actions:Nautilus-Actions Configuration Tool] lassen sich benutzerdefinierte Aktionen mit einer grafischen Oberfläche verwalten. Bei Bedarf kann man auch neue anlegen und vorhandene bearbeiten. Praktisch ist weiterhin die Möglichkeit, Skripte in Kategorien zusammenzufassen (also als Untermenü im Kontextmenü anzeigen). Nach der Installation ist es bei Ubuntu-Varianten mit einem Anwendungsmenü unter ''"System -> Einstellungen für Nautilus-Aktionen"'' zu finden. Manche der vielfältigen Einstellungsmöglichkeiten erschließen sich aber erst, wenn man sich intensiv mit der eingangs erwähnten [#Grundlagen DES-EMA-Spezifikation] auseinander setzt. Eine Anmerkung am Rande: Neu erstellte Dateien erhalten automatisch Dateinamen wie '''44c437e3-6d88-482b-a193-eabcb4c5df5a.desktop''', die man mit einem Dateimanager bei Nichtgefallen einfach umbenennen kann. {{{#!vorlage Tabelle [[Bild(./nautilus-actions.png, x300)]] +++ Nautilus-Actions Configuration Tool unter Lubuntu 14.04 }}} = Links = * [http://bernaerts.dyndns.org/linux/323-lubuntu-trusty-empty-trash-menu Add right click menu to Empty Trash] {en} - Blogbeitrag, 11/2014 * [http://lubuntu.me/tip-actions/ Actions] {en} - Blogbeitrag, 04/2014 * [https://madebits.github.io/#blog/2014/2014-03-17-Custom-PcManFM-Context-Menu-Actions.md Creating Custom PcManFM Context Menus in Lubuntu 14.04] {en} - Blogbeitrag mit ausführlichen Hintergrundinformationen und Beispielen, 03/2014 * [:PCMan_File_Manager:] - Hauptartikel # tag: LXDE, Dateimanager