[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Rechte/Dateimanager: Rechte für Dateien und Ordner ändern] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Menüeditor/alacarte_logo.png, 48, align=left)]] Desktop Entries bieten die Möglichkeit, einige Anwendungen mit zusätzlichen Menüeinträgen zu erweitern. So kann man z.B. direkt aus der Startleiste heraus ein neues Dokument in [:gedit:] erstellen, neue Tabs im [:Firefox:] öffnen und vieles mehr… Dieser Artikel soll zeigen, wie Desktop Entries aufgebaut sind und wie man sie zu bestehenden Programmstartern hinzufügt. Zurzeit werden Desktop Entries in [:GNOME_3:] und [:KDE:] unterstützt. In KDE sind sie auch als "Desktop Actions" bekannt. In GNOME3 werden diese Jumplists genannt. Sämtliche persönlichen Desktop Entríes sollten nach Ergänzung der entsprechenden [:.desktop-Dateien:.desktop-Datei] im versteckten Ordner '''~/.local/share/applications/''' im [:Homeverzeichnis:] abgespeichert werden. = Aufbau = [[Vorlage(Bildunterschrift, ./quicklist_wiki_libreoffice.png, 260, "Desktop entry für LibreOffice", right)]] Ein Desktop Entry ist grundsätzlich eine Erweiterung einer '''.desktop'''-Datei, wobei diese um folgendes Gerüst ergänzt wird: {{{#!code text […] Actions=ELEMENTNAME; [Desktop Action ELEMENTNAME] Name=BESCHREIBUNG Exec=BEFEHL Path=PFAD/ZUR/ANWENDUNG OnlyShowIn=GNOME;KDE }}} Die Zeile: {{{ Actions=ELEMENTNAME; }}} weist die Desktop-Umgebung darauf hin, dass nun ein Desktop Entry beginnt. In diesem Beispiel enthält das Desktop Entry ein Element mit dem Namen ''"ELEMENTNAME"'', aber es können auch mehrere Elemente aufgenommen werden. Die einzelnen Elemente werden mit einem Semikolon abgetrennt. {{{#!vorlage Tabelle <-2 tableclass="zebra_start3" rowclass="titel"> Erläuterung +++ Element Beschreibung +++ `[Desktop Action ELEMENTNAME]` Weist darauf hin, dass die folgenden Parameter zum Element ''"ELEMENTNAME"'' gehören. +++ `Name=BESCHREIBUNG` Text, der angezeigt werden soll +++ `Exec=BEFEHL` Befehl, der ausgeführt werden soll, wenn dieses Element ausgewählt wird. +++ `Path=PFAD/ZUR/ANWENDUNG` Legt einen Ordner fest, aus dem der Befehl ausgeführt werden soll. Diese Zeile ist optional und kann auch weggelassen werden. +++ `OnlyShowIn=GNOME;KDE` Lässt dieses Element nur in GNOME3 und KDE erscheinen und verhindert damit Probleme in anderen Desktop-Umgebungen. }}} = Dateirechte = Damit die '''.desktop'''-Dateien auch benutzt werden können, muss in den Datei-Rechten[1] explizit die Ausführung gestattet sein (siehe auch [:.desktop-Dateien#Starter-ausfuehrbar-machen:Starter ausführbar machen]). Diese Rechte kann man entweder über das Kontextmenü eines Dateimanagers mit [[Vorlage(Tasten, rmb)]] ''"Eigenschaften -> Zugriffsrechte (bzw. Berechtigungen)"'' oder über folgenden Befehl setzen: {{{#!vorlage Befehl chmod u+x DATEINAME }}} = Lokalisierung = Man kann den Namen auch für verschiedene Systemsprachen anpassen. Dazu ergänzt man unterhalb von `Name=...` eine weitere Zeile: {{{ Name[LÄNDERCODE]=ÜBERSETZUNG }}} Beispielsweise könnte das so aussehen: {{{#!code text Actions=Window; [Desktop Action Window] Name=Open a new window Name[de]=Neues Fenster öffnen Exec=... OnlyShowIn=GNOME;KDE }}} Eine genaue Beschreibung zur Lokalisierung findet man im Artikel [:.desktop-Dateien#Lokalisierung:.desktop-Dateien]. = Werkzeuge = Neben der manuellen Erstellung mit einem Editor gibt es auch Programme, die bei der Erstellung weiterhelfen können. Hier sei insbesondere auf das Programm [:MenuLibre:] verwiesen. = Beispiele = Möchte man einen vorhandenen Programmstarter um einen Desktop Entry erweitern oder einen vorhanden ändern, dann empfiehlt es sich, nicht den originalen Programmstarter unter '''/usr/share/applications''' zu ändern, sondern sich diesen in den Ordner '''~/.local/share/applications''' zu kopieren und die Kopie zu bearbeiten. Dies hat den Vorteil, dass der veränderte Starter auch bei einer Aktualisierung erhalten bleibt, da das System zuerst Programmstarter aus '''~/.local/share/applications/''' bevorzugt, bevor es die in '''/usr/share/applications/''' (diese werden bei einer Aktualisierung evtl. überschrieben) vorhandenen startet. {{{#!vorlage Hinweis Damit ein geänderter Programmstarter berücksichtigt wird, muss man sich unter Umständen ab- und wieder neu anmelden. }}} == Gedit == Wenn man nun beispielsweise den Starter des Editors [:gedit:] um die Möglichkeit erweitern möchte, ein neues Fenster oder ein neues Dokument zu öffnen, dann sähe der Desktop Entry folgendermaßen aus: {{{ Actions=Window;Document; [Desktop Action Window] Name=Neues Fenster öffnen Exec=gedit --new-window OnlyShowIn=GNOME;KDE [Desktop Action Document] Name=Neues Dokument öffnen Exec=gedit --new-document OnlyShowIn=GNOME;KDE }}} Dieser Desktop Entry wird nun am Ende des bestehenden Programmstarters '''org.gnome.gedit.desktop''', den man sich zuvor in den Ordner '''~/.local/share/applications/''' kopiert hat, angefügt. Dazu öffnet man den Starter mit einem Editor [2] eigener Wahl und ergänzt den Desktop Entry. In diesem Beispiel sähe der vollständige Programmstarter dann so aus: {{{ [Desktop Entry] Name=Text Editor Comment=Edit text files Exec=gedit %U Terminal=false Type=Application StartupNotify=true MimeType=text/plain; # TRANSLATORS: Do NOT translate or transliterate this text! # This is an icon file name. Icon=org.gnome.gedit Categories=GNOME;GTK;Utility;TextEditor; Actions=new-window;new-document; # TRANSLATORS: Do NOT translate or localize the semicolons! # The list MUST also end with a semicolon! # Search terms to find this application. Keywords=Text;Editor;Plaintext;Write;gedit; DBusActivatable=true X-Ubuntu-Gettext-Domain=gedit [Desktop Action Window] Name=Neues Fenster öffnen Exec=gedit --new-window OnlyShowIn=GNOME;KDE [Desktop Action Document] Name=Neues Dokument öffnen Exec=gedit --new-document OnlyShowIn=GNOME;KDE }}} Nach dem Abspeichern der Datei '''org.gnome.gedit.desktop''' ist der Desktop Entry nach einer Neuanmeldung abrufbar. == Nautilus == Das folgende Beispiel bietet die Möglichkeit, den Dateimanager [:Nautilus:] um einen Schnellzugriff auf die folgenden Ordner zu erweitern: * '''~/Bilder/''' * '''~/Musik/''' * '''~/Videos/''' Dazu kopiert man die vorhandene Datei '''/usr/share/applications/org.gnome.nautilus.desktop''' nach '''~/.local/share/applications/org.gnome.nautilus.desktop''' und ergänzt den Programmstarter am Dateiende um folgende Zeilen: {{{ Actions=OpenPics;OpenMusic;OpenVideos; [Desktop Action OpenPics] Name=Öffne Eigene Bilder Exec=xdg-open $(xdg-user-dir PICTURES) OnlyShowIn=GNOME;KDE [Desktop Action OpenMusic] Name=Öffne Eigene Musik Exec=xdg-open $(xdg-user-dir MUSIC) OnlyShowIn=GNOME;KDE [Desktop Action OpenVideos] Name=Öffne Eigene Videos Exec=xdg-open $(xdg-user-dir VIDEOS) OnlyShowIn=GNOME;KDE }}} Im Beispiel wird bewusst der Befehl [:xdg-open:] statt eines konkreten Programmnamens verwendet. So wird immer der vom Benutzer eingestellte jeweilige Standard-Dateimanager verwendet. Außerdem wird xdg-user-dir verwendet, um ein öffnen der Ordner unabhängig der eingestellten Sprache zu gewährleisten, diese können natürlich auch durch volle Pfade ersetzt werden. == LibreOffice == Um das eingangs abgebildete Desktop Entry für [:LibreOffice:] zu erstellen, kopiert man zuerst die Datei '''/usr/share/applications/libreoffice-startcenter.desktop''' nach '''~/.local/share/applications/libreoffice-startcenter.desktop'''. Dann editiert man den Programmstarter und fügt folgende Zeilen an: {{{ Actions=Writer;Impress;Calc;Math;Draw [Desktop Action Writer] Name=Writer Exec=libreoffice -writer %U OnlyShowIn=GNOME;KDE [Desktop Action Impress] Name=Impress Exec=libreoffice -impress %U OnlyShowIn=GNOME;KDE [Desktop Action Calc] Name=Calc Exec=libreoffice -calc %U OnlyShowIn=GNOME;KDE [Desktop Action Math] Name=Math Exec=libreoffice -math %U OnlyShowIn=GNOME;KDE [Desktop Action Draw] Name=Draw Exec=libreoffice -draw %U OnlyShowIn=GNOME;KDE }}} Zuletzt kann man auf Wunsch noch den [:MIME-Typ:] anpassen. Dazu die Zeile: {{{MimeType=application/vnd.openofficeorg.extension;}}} durch Folgende ersetzen: {{{ MimeType=application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-template;application/vnd.oasis.opendocument.text-web;application/vnd.oasis.opendocument.text-master;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.template;application/vnd.sun.xml.writer.global;application/vnd.stardivision.writer;application/msword;application/vnd.ms-word;application/x-doc;application/rtf;text/rtf;application/vnd.wordperfect;application/wordperfect;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-word.document.macroenabled.12;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.ms-word.template.macroenabled.12;application/vnd.oasis.opendocument.spreadsheet;application/vnd.oasis.opendocument.spreadsheet-template;application/vnd.sun.xml.calc;application/vnd.sun.xml.calc.template;application/vnd.stardivision.calc;application/vnd.stardivision.chart;application/msexcel;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.ms-excel.sheet.macroenabled.12;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-excel.template.macroenabled.12;application/vnd.ms-excel.sheet.binary.macroenabled.12;text/csv;application/x-dbf;application/vnd.oasis.opendocument.graphics;application/vnd.oasis.opendocument.graphics-template;application/vnd.sun.xml.draw;application/vnd.sun.xml.draw.template;application/vnd.stardivision.draw;application/vnd.oasis.opendocument.presentation;application/vnd.oasis.opendocument.presentation-template;application/vnd.sun.xml.impress;application/vnd.sun.xml.impress.template;application/vnd.stardivision.impress;application/mspowerpoint;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.ms-powerpoint.presentation.macroenabled.12;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.ms-powerpoint.template.macroenabled.12;application/vnd.oasis.opendocument.formula;application/vnd.sun.xml.math;application/vnd.stardivision.math; }}} == Ubuntuusers.de == [[Vorlage(Bildunterschrift, ./quicklist_wiki_ubuntuusers.png, 260, "Desktop Entry für Ubuntuusers.de", right)]] Als letztes Beispiel soll ein neuer Programmstarter für das hiesige Portal dienen. Dazu die Datei '''~/.local/share/applications/ubuntuusers.desktop''' erstellen und mit folgendem Inhalt füllen: {{{ [Desktop Entry] Version=1.0 Type=Application Name=ubuntuusers.de Name[de]=ubuntuusers.de Terminal=false Exec=xdg-open https://ubuntuusers.de Icon=/home/$USER/Bilder/simple.png Categories=Network;WebBrowser; StartupNotify=true X-MultipleArgs=false StartupWMClass=ubuntuusers.de Actions=Forum;EigeneBeitraege;Abonnements;NeueBeitraege;Wiki;Suche;Nachrichten;Kontrollzentrum; [Desktop Action Forum] Name=Forum Name[de]=Forum Exec=xdg-open https://forum.ubuntuusers.de/ OnlyShowIn=GNOME;KDE [Desktop Action EigeneBeitraege] Name=Forum :: Eigene Beiträge Name[de]=Forum :: Eigene Beiträge Exec=xdg-open https://forum.ubuntuusers.de/egosearch/ OnlyShowIn=GNOME;KDE [Desktop Action Abonnements] Name=Forum :: Abonnements Name[de]=Forum :: Abonnements Exec=xdg-open https://ubuntuusers.de/usercp/subscriptions/ OnlyShowIn=GNOME;KDE [Desktop Action NeueBeitraege] Name=Forum :: Neue Beiträge Name[de]=Forum :: Neue Beiträge Exec=xdg-open https://forum.ubuntuusers.de/newposts/ OnlyShowIn=GNOME;KDE [Desktop Action Wiki] Name=Wiki Name[de]=Wiki Exec=xdg-open https://wiki.ubuntuusers.de/ OnlyShowIn=GNOME;KDE [Desktop Action Suche] Name=Suche Name[de]=Suche Exec=xdg-open https://ubuntuusers.de/search/ OnlyShowIn=GNOME;KDE [Desktop Action Nachrichten] Name=Private Nachrichten Name[de]=Private Nachrichten Exec=xdg-open https://ubuntuusers.de/privmsg/inbox/ OnlyShowIn=GNOME;KDE [Desktop Action Kontrollzentrum] Name=Kontrollzentrum Name[de]=Kontrollzentrum Exec=xdg-open https://ubuntuusers.de/usercp/ OnlyShowIn=GNOME;KDE }}} Jetzt fehlt nur noch ein passendes [https://media-cdn.ubuntu-de.org/wiki/attachments/51/28/simple.png Symbol] {dl}. Dieses kopiert man z.B. in den Ordner '''~/Bilder/''' im [:Homeverzeichnis:]. Sobald die Datei erstellt ist, kann man den Programmstarter bequem via Drag&Drop in die Startleiste ziehen. = Problembehebung = Im Internet, z.B. bei [askubuntu:35488/what-custom-launchers-and-unity-quicklists-are-available:What Custom Launchers and Unity Quicklists are available?] {en}, finden sich immer wieder Beispiele, die noch die Syntax aus den Anfangstagen von Unity verwenden. Diese Beispiele lassen sich unter Verwendung der folgenden Tabelle einfach abändern und funktionieren dann tadellos. {{{#!vorlage Tabelle Alte und neue Syntax für Quicklists +++ Alt <:>Neu +++ `X-Ayatana-Desktop-Shortcuts=ELEMENTNAME` `Actions=ELEMENTNAME;` +++ `[ELEMENTNAME Shortcut Group]` `[Desktop Action ELEMENTNAME]` +++ `TargetEnvironment=Unity` `OnlyShowIn=GNOME;KDE` }}} = Links = == Intern == * [:GNOME:] {Übersicht} - Übersichtsartikel zur Desktop-Oberfläche GNOME * [:.desktop-Dateien:] - Erstellen von Programmstartern * [:KDE-Servicemenüs:] - Nutzung der ''"Desktop Action"''-Erweiterung unter KDE == Extern == * [https://specifications.freedesktop.org/desktop-entry-spec/latest/] {en} Desktop Entry Spezifikation von freedesktop * [https://extensions.gnome.org/extension/322/quicklists/ Quicklists] {en} - GNOME-Shell-Erweiterung, um Quicklists auch in früheren GNOME-Shell-Versionen nutzen zu können # tag: GNOME 3, KDE