Paketbau/SUSE-Paketkonventionen/Desktop-Menü

aus openSUSE, der freien Wissensdatenbank




Inhaltsverzeichnis

9. Desktop-Menü

In diesem Kapitel wird beschrieben, wie Desktop-Menüs unter openSUSE/SUSE Linux unterstützt werden. Nach einer Einführung folgt ein Abschnitt über das grundlegende Dateiformat von .desktop-Dateien. Im nächsten Abschnitt wird das genaue Format solcher Dateien unter openSUSE/SUSE Linux definiert. Abschließend folgt eine Übersicht über die Kategorien die genutzt werden, um Einträge in Untermenüs zu sortieren.

So gut wie alle Fensterverwalter unterstützen den Start von Anwendungen aus einem Menü heraus. Dieses Menü ist oft statisch. Aus diesem Grund hat SUSE einige Fensterverwalter dahingehend erweitert, dass ihr Menü nur aktuell installierte Anwendungen anzeigt.

Vor SL 9.0 wurden die Desktop-Menüs vom SUSE-spezifischen Werkzeug susewm aktualisiert. Ein Problem dabei war, dass die Informationen über einen Menüeintrag (wie Name, Symbol, Position im Menü oder Aufruf zum Ausführen) nicht im Paket gespeichert wurden, sondern in einer Datenbank, die im Paket susewm enthalten war; und nur SUSEs Entwickler waren in der Lage, einen neuen Menüeintrag mit Hilfe interner Werkzeuge zu registrieren.

Seit SL 9.0 folgt openSUSE/SUSE Linux der unter http://freedesktop.org/Standards/menu-spec definierten Desktop-Menüspezifikation. Die Lösung basiert auf .desktop-Dateien und wird von KDE und GNOME direkt unterstützt. Zusätzlich stellt openSUSE/SUSE Linux das Werkzeug /usr/bin/xdg_menu bereit, welches in der Lage ist, Desktop-Menüs für einige andere Fensterverwalter zu aktualisieren. Es ist im Paket xdg-menu enthalten und unterstützt zur Zeit WindowMaker, fvwm2, blackbox und icewm.


9.1. Basisformat der Datei

Die Desktop-Menüeinträge werden in .desktop-Dateien gespeichert. Dieser Abschnitt enthält nur einige allgemeine Informationen über diese Dateien. Besuchen Sie http://www.freedesktop.org/standards/desktop-entry-spec für weitere Details.

Die .desktop-Dateien sind einfache Textdateien in denen Informationen in Gruppen sortiert sind. Eine Gruppe beginnt mit der Zeile:

[group_name]

Alle folgenden Zeilen gehören zur selben Gruppe, bis eine andere Gruppe beginnt oder die Datei endet.

Die Informationen werden folgendermaßen durch {Schlüssel,Wert} -Paare definiert:

Schlüssel=Wert

Dieses Beispiel entstammt der Datei /usr/share/applications/xboard.desktop und definiert einen Desktop-Menüeintrag für das Spiel xboard:

[Desktop Entry]
Name=Xboard
GenericName=Chess Game
Type=Application
Exec=xboard
Icon=xboard
Categories=Game;BoardGame
X-SuSE-translate=true


9.2. Desktop-Menüeintrag

In diesem Abschnitt wird das genaue Format der .desktop-Dateien unter openSUSE/SUSE Linux definiert. Die Dateien folgen der Desktop Entry-Spezifikation, welche Sie unter http://www.freedesktop.org/standards/desktop-entry-spec finden, erweitert durch die Desktop-Menüspezifikation, die unter http://freedesktop.org/Standards/menu-spec erhältlich ist. Dieser Abschnitt behandelt nur die wichtigsten, SUSE-spezifischen Informationen. Weitere Details erhalten Sie in den offiziellen Spezifikationen.

Die .desktop-Dateien verwenden die Endung .desktop. Sie sind in UTF-8 kodiert und stellen die folgenden Informationen in dieser Gruppe bereit:

[Desktop Entry]

Diese Schlüssel werden benötigt:

  • Type gibt den Typ des Desktop-Eintrags an. Für Desktop-Menüeinträge muss der Wert ”Application” benutzt werden.
  • Name gibt die englische Zeichenkette an, die im Menü erscheint.
  • Exec gibt die aufzurufende ausführbare Datei an. Wenn möglich sollten absolute Pfade vermieden werden.
  • Categories gibt an, in welche Kategorie die Anwendung einzuordnen ist. Es ist eine ';'-separierte Liste. Unterstützte Kategorien finden Sie in Abschnitt 9.4 "Kategorienliste". Diese Information wird dazu genutzt, Menüeinträge in Untermenüs zu sortieren.
  • X-SuSE-translate gibt an, ob die Schlüssel Name und GenericName übersetzt werden sollen. Mögliche Werte sind “true” und “false”. Falls dieser Schlüssel fehlt, wird er automatisch vom Makro %suse_update_desktop_file hinzugefügt. Siehe auch Abschnitt 9.3 "Installation und Aktualisierung". Der Standardwert ist “true”.

Die folgenden Schlüssel sind optional:

  • Encoding gibt die in der Desktop-Datei genutzte Kodierung explizit an. Es sollte der Wert “UTF-8” genutzt werden.
  • Icon gibt das Symbol an, dass mit der Anwendung verbunden ist. Der Wert ist der Name eines Symbols ohne Endung. Es werden nur .png- und .xpm-Symbole unterstützt. Sie müssen entweder unter /usr/share/pixmaps/ oder unter /opt/gnome/share/pixmaps/ installiert werden.
  • GenericName gibt einen Kommentar an, der in einem Hinweis angezeigt werden kann. In den alten Desktop-Dateien wurde er durch den Schlüssel Comment definiert.
  • Name[lang] definiert eine Übersetzung des Schlüssels Name in die Sprache lang. Diese muss in UTF-8 kodiert sein.
  • GenericName[lang] definiert eine Übersetzung des Schlüssels GenericName in die Sprache lang. Diese muss in UTF-8 kodiert sein.
  • MimeType definiert die MIME-Typen, die von der Anwendung verarbeitet werden können. Der Wert ist eine semikolonseparierte Liste, so dass verschiedene MIME-Typen angegeben werden können.
  • OnlyShowIn gibt an, dass der Menüeintrag nur für eine bestimmte Arbeitsfläche gedacht ist. Mögliche Werte sind “GNOME” und “KDE”.

Dieses Beispiel stammt aus /usr/share/applications/xemacs.desktop:

[Desktop Entry]
Encoding=UTF-8
Name=X Emacs
GenericName=Text Editor
GenericName[cs]=Textov� editor
GenericName[de]=Texteditor
GenericName[fr]=�diteur de texte
GenericName[it]=Editor di testi
MimeType=text/english;text/plain;text/x-makefile;\
text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;\
text/x-java;text/x-moc;text/x-pascal;text/x-tcl;\
text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=xemacs %f
Icon=emacs
Type=Application
Terminal=0
X-KDE-StartupNotify=true
X-KDE-WMClass=emacs
X-KDE-AuthorizeAction=shell_access
Categories=TextEditor
X-SuSE-translate=true


9.3. Installation und Aktualisierung

Die Desktop-Menüspezifikation erlaubt es, verschiedene Verzeichnisse nach .dekstop-Dateien zu durchsuchen. Unter openSUSE/SUSE Linux sind dies:

  • /opt/kde3/share/applications/
  • /opt/gnome/share/applications/
  • /usr/share/applications/

Das heißt, dass GNOME- und KDE-Anwendungen .desktop-Dateien an die gewöhnlichen Orte installieren können. Die Menüeinträge werden dann automatisch auch in allen anderen unterstützten Fensterverwaltern genutzt. Allerdings kann dies auch verhindert werden, wenn die .dekstop-Dateien OnlyShowIn=GNOME; oder OnlyShowIn=KDE; enthalten. Das heißt aber auch, dass sich die von GNOME- und KDE-Anwendungen installierten .desktop-Dateien an die im vorherigen Abschnitt definierten Regeln halten müssen.

Das Makro %suse_update_desktop_file sollte für jede installierte .desktop-Datei aufgerufen werden. Es aktualisiert Übersetzungen und führt einige Prüfungen durch. Es kann auch dazu genutzt werden, die Kategorie zu ändern. Außerdem kann es auch dazu genutzt werden, die .dekstop-Datei zu installieren oder eine von Grund auf neue zu erstellten. Dieses Makro setzt voraus, dass das Paket update-desktop-files installiert ist. Siehe Kapitel 3.33 "%suse_update_desktop_file" für weitere Details.

Pakete mit GNOME- und KDE-Anwendungen bringen in der Regel ihre eigenen .desktop-Dateien mit, die mit make install installiert werden. Dann reicht es aus, dass Makro %suse_update_desktop_file für sie aufzurufen und die Datei im %files-Abschnitt einzutragen. Dieses Beispiel entstammt dem Paket kdclock:


BuildRequires: ... update-desktop-files ...
[...]

%install
[...]
%suse_update_desktop_file  %name Utility TimeUtility

%files
[...]
/opt/kde3/share/applnk/Utilities/kdclock.desktop


Andere Pakete bringen für Gewöhnlich keine eigene .desktop-Datei mit. Sie können mit dem Makro %suse_update_desktop_file selber eine einfache .desktop-Datei erstellen lassen. Eine komplexere .desktop-Datei wird in der Regel als Extraquelle hinzugefügt. Diese wird dann vom Makro %suse_update_desktop_file im %install-Abschnitt installiert, geprüft und aktualisiert. Zum Schluss wird die Datei in der %files-Sektion eingetragen. Dieses Beispiel entstammt dem Paket xboard (auch das fehlende Symbol wird von einer Extraquelle aus installiert):


BuildRequires: ... update-desktop-files ...
[...]
Source1:      %name.desktop
Source2:      %name.png
[...]

%install
[...]
mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps/
install -m 644 $RPM_SOURCE_DIR/%name.png \
               $RPM_BUILD_ROOT/usr/share/pixmaps
%suse_update_desktop_file -i %name Game BoardGame

%files
[...]
/usr/share/applications/%name.desktop
/usr/share/pixmaps/%name.png


Das %suse_update_desktop_file-Makro durchsucht die Verzeichnisse $RPM_SOURCE_DIR und /usr/share/update-desktop-files/templates nach Desktop-Dateiquellen. Das obige beispiel zeigt die übliche Lösung, bei der die .desktop-Datei bereits den Namen der Paketquelle trägt; es wird dann im $RPM_SOURCE_DIR-Verzeichnis gefunden.

Siehe auch Kapitel 3.33, "%suse_update_desktop_file" für weitere Beispiele.

9.4. Kategorienliste

Dieser Abschnitt enthält eine Liste der in openSUSE/SUSE Linux genutzten Kategorien, die benötigt werden, um Desktop-Menüeinträge in Untermenüs zu sortieren. Die Liste basiert auf der Desktop-Menüspezifikation, siehe http://freedesktop.org/Standards/menu-spec . Zusätzlich gibt es einige SUSE-spezifische Kategorien, die zur Zeit nicht Teil der Spezifikation sind.

Den SUSE-spezifischen Kategorien muss die Vorsilbe "X-SuSE-" vorangestellt werden. In der folgenden Liste werden diese Kategorien allerdings ohne die Vorsilbe aufgelistet, da sich die Situation ändert und diese Kategorien langsam Teil der Spezifikation werden. Wo nötig, fügt das %suse_update_desktop_file-Makro die Vorsilbe hinzu.

Einige der Kategorien wurden in der Vergangenheit umbenannt. Die überflüssigen Namen werden in der Liste ebenfalls aufgeführt; sie werden vom %suse_update_desktop_file-Makro automatisch umbenannt.


9.4.1. Development-Kategorien

Nutzen Sie diese zusammen mit der Development-Kategorie, wie in Category=Development;IDE;.

  • Building
  • Debugger
  • Design
  • Documentation
  • GUIDesigner
  • IDE
  • Profiling
  • RevisionControl
  • Translation

9.4.2. Edutainment-Kategorien

Nutzen Sie diese zusammen mit der Edutainment-Kategorie, zum Beispiel als Category=Edutaintment;Astronomy;.

  • Art
  • Astronomy
  • Chemistry
  • Construction
  • Engineering
  • Languages — ersetzt Language und X-KDE-Edu-Language
  • Math
  • Music
  • School
  • Science
  • Teaching — ersetzt X-KDE-Edu-Teaching

9.4.3. Game-Kategorien

Nutzen Sie diese zusammen mit der Game-Kategorie, wie in Category=Game;ArcadeGame;.

  • 3DGame
  • ActionGame
  • AdventureGame
  • Amusement
  • ArcadeGame
  • BlocksGame
  • BoardGame
  • CardGame
  • FirstPersonGame
  • KidsGame
  • LogicGame
  • PlatformGame
  • PuzzleGame
  • RolePlaying — ersetzt RolePlayingGame
  • Simulation — ersetzt SimulationGame
  • SportsGame
  • StrategyGame

9.4.4. Graphics-Kategorien

Nutzen Sie diese zusammen mit der Graphics-Kategorie, zum Beispiel als Category=Graphics;Viewer;.

  • 2DGraphics
  • 3DGraphics
  • OCR
  • Photograph
  • RasterGraphics
  • Scanning
  • VectorGraphics
  • Viewer

9.4.5. Internet-Kategorien

Nutzen Sie diese zusammen mit der Network-Kategorie, wie in Category=Network;Email;.

  • Dialup — ersetzt DialUp
  • Email
  • FileTransfer
  • HamRadio
  • InstantMessaging
  • IRCClient
  • Monitor
  • News — ersetzt Newsreader
  • P2P
  • RemoteAccess
  • Telephony — ersetzt Telephone
  • WebBrowser
  • WebDevelopment

9.4.6. Multimedia-Kategorien

Nutzen Sie diese zusammen mit der AudioVideo-Kategorie, zum Beispiel als Category=Audiovideo;AudioMixer;.

  • Midi
  • Mixer — ersetzt AudioMixer
  • Music
  • AudioVideoEditing
  • Player — ersetzt AudioVideoPlayer
  • Recorder — ersetzt AudioVideoRecorder
  • DiscBurning — ersetzt Burning
  • CD
  • Jukebox
  • Sequencer
  • Tuner
  • TV

9.4.7. Office-Kategorien

Nutzen Sie diese zusammen mit der Office-Kategorie, zum Beispiel als Category=Office;Presentation;.

  • ContactManagement — ersetzt AddressBook
  • Calendar
  • Database
  • Dictionary
  • Finance
  • FlowChart
  • Presentation
  • ProjectManagement
  • Spreadsheet
  • Viewer
  • Warehouse
  • WordProcessor

9.4.8. Utility-Kategorien

Nutzen Sie diese zusammen mit der Utility-Kategorie, wie in Category=Utility;TextEditor;.

  • Accessibility
  • Applet
  • Archiving
  • Calculator
  • DesktopUtility
  • PDA
  • PrintingUtility
  • Security
  • Shell
  • SyncUtility
  • Telephony
  • TextEditor
  • TimeUtility
  • WebUtility
  • XMLUtility

9.4.9. System-Kategorien

Nutzen Sie diese zusammen mit der System-Kategorie, zum Beispiel als Category=System;Emulator;.

  • Applet
  • Archiving
  • Backup
  • Database
  • Documentation
  • Emulator
  • FileManager
  • Filesystem
  • HardwareSettings
  • Monitor
  • Network
  • PackageManager
  • RemoteAccess
  • Screensaver
  • Security
  • Shell
  • SystemSetup
  • Telephony — ersetzt Telephone
  • TerminalEmulator
  • TrayIcon
  • Utility




Weiter