claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 09/2004   »   Ausgabe bestellen

Eigene Kontextmenü-Einträge erstellen.

Rechts lang!

von Kalle Gerwien


"Das mach' ich doch mit links" war früher. Heute geht's mit leichter Hand und Rechtsklick.

Manche Funktionen möchte man so einfach wie möglich zur Hand haben. Schnell das Digitalkamera-Bild Hochkant stellen, oder die MP3-Datei auf den Player kopieren. Ohne erst Programm XY starten zu müssen. Dafür gibt es Servicemenüs, die nach einem Rechtsklick auf eine Datei die gewünschten Optionen ausführen.

Der Konqueror hat dynamische Kontext-Menüs: Bei einem Rechtsklick auf eine OpenOffice- Datei bietet Ihnen das Kontext-Menü sinnvollerweise an, diese Datei mit dem Officepaket zu öffnen. Das entsprechende passiert, wenn Sie eine Musikdatei anklicken. Wieder erkennt Konqueror den Dateityp und bietet Ihnen eine Auswahl an Programmen an, mit denen die Datei geöffnet werden kann. Das Kontext-Menü reagiert also "dynamisch" auf die gewählten Dateien. Da das Öffnen einer Grafikkdatei mittels XMMS genau so unsinnig wäre, wie das einer Musikdatei mittels GIMP, werden diese Optionen unterbunden. Unabhängig von den Service-Menü-Einträgen, die die verschiedenen Programme bei der Installation vorgenommen haben, können Sie selbst passende Einträge erstellen. Dabei sind Sie nicht auf die Option "Dateityp XY wird von Programm Z geöffnet" beschränkt. Es ist einfach, auch komplexe Operationen in einem Servicemenü [1] unterzubringen.

Das Servicemenü.

Um einen eigenen Befehl im Kontextmenü der rechten Maustaste zu verankern, braucht es eine Servicemenü-Datei. Diese Dateien tragen die Endung .desktop und liegen im Unterverzeichnis servicemenus des Konquerors, also z.B. /home/USER/.kde/share/apps/konqueror/servicemenus (Bei Mandrake und Red Hat: /usr/share/apps/konqueror/servicemenus). Sie benötigen Schreibrechte in dem Verzeichnis.

Als Beispiel dient ein Servicemenü, das auf Mausklick Digitalkamera-Fotos verkleinert und so für den E-Mail-Versand vorbereitet. Zeitgemäße Digitalkameras liefern megabyte-große Dateien, die für den Mailversand viel zu groß sind. Viele E-Mail-Postfächer sind in der Größe beschränkt und verweigern die Annahme von E-Mails mit übergroßen Anhängen. Das Servicemenü soll deshalb von markierten Bildern eine verkleinerte Kopie erstellen.

Öffnen Sie mit einem Text-Editor (z.B. Kate oder Kedit) ein neues Dokument. Zuoberst einer Servicemenü-Datei steht die Definition des Desktop Entry:

[Desktop Entry]
ServiceTypes=image/png,image/jpeg
Actions=Bild_verkleinern

Der erste Eintrag in der Desktop Entry-Sektion bestimmt die Dateitypen, die mit dem Menü behandelt werden sollen, hier also Bilddateien im PNG- und JPG-Format. Sie können beliebig viele Dateitypen deklarieren, dabei darf jedoch zwischen Komma und der Typenbezeichnung kein Leerzeichen stehen. Ab KDE 3.2 können Sie mit der Deklaration ServiceTypes=image/* alle Bilddaten ansprechen.

In der zweiten Sektion ist die eigentlich Funktion definiert:

[Desktop Action Bild_verkleinern]
Name=Bild verkleinern.
Icon=image

Die Einleitung der Action-Sektion wiederholt den Namen, der unter Desktop Entry angegeben wurde. Der Eintrag Icon ist optional und gibt den Namen eines Symbols an, das im Kontextmenü vor dem Eintrag steht.

Als nächstes folgt der Befehl, den das Servicemenü ausführen soll, hier die eigentliche Umwandlung in eine verkleinerte Kopie. Der passende Befehl ist das Programm convert aus dem ImageMagick-Paket [2]. Dieses Grafikpaket ist bei einer Linux-Standardinstallation normalerweise enthalten. Der passende Eintrag für den Aufruf von convert wäre in diesem Fall mit Parametern, die eine Verkleinerung der Ausgangsdatei auf ein Viertel in eine neue Zieldatei bewirken:

Exec=convert %u -resize 25% /dev/shm/%n

Die Zeile Exec ruft das Komandozeilen-Programm convert auf und übergibt diesem die Variable %u. Wie Tabelle 1 zeigt, steht diese Variable für den kompletten Quellpfad der Ausgangsdatei. %n steht für den Dateinamen ohne Pfad, sorgt also zusammen mit dem vorangestellten /dev/shm/ dafür, dass die gleichnamige Zieldatei in diesem Verzeichnis landet. Passen Sie das Zielverzeichnis nach Ihren Wünschen an.

Abb. 1: Das komplette Servicemenü.

Der Test.

Das Servicemenü ist damit einsatzbereit, sobald Sie es im richtigen Verzeichnis (s.o.) gespeichert haben. Zur Überprüfung klicken Sie recht mit der rechten Maustsate auf eine beliebige Bilddatei. Im aufklappenden Menü erscheint die Option Bild verkleinern, bei KDE 3.2 unter Aktion | Bild verkleinern. Wählen Sie den Eintrag aus, finden Sie nach kurzer Zeit die verkleinerte Kopie im definierten Zielverzeichnis.

Mehrere Optionen

Bei Bedarf bringen Sie mehr als eine Option in einem Servicemenü unter. Dies zeigt das nächste Beispiel, das ein Bild wahlweise nach rechts oder links dreht. Beginnen Sie dazu wie beschrieben mit einer Sektion Desktop Entry an:

[Desktop Entry]
ServiceTypes=image/*
Actions=rotate_right;rotate_left

Die Dateien, für die der Eintrag gelten soll, sind hier mit der KDE-3.2-Syntax für alle Bilddateien ausgewählt -- unter KDE 3.1 sollte die Anweisung image/jpeg lauten. Der Eintrag Actions hat diesmal zwei Optionen, getrennt durch ein Semikolon: Damit hat auch das Servicemenü zwei Optionen vor -- einmal im, einmal gegen den Uhrzeigersinn drehen. Dementsprechend müssen auch zwei Desktop Action-Sektionen folgen:

[Desktop Action rotate_right]
Name=Bild nach rechts drehen
Icon=image
Exec=convert %u -rotate 90 %u

[Desktop Action rotate_left]
Name=Bild nach links drehen
Icon=image
Exec=convert %u -rotate 270 %u

Speichern Sie die Datei unter dem Namen rotate.desktop in Ihrem Servicemenü-Verzeichnis ab. Es ist sofort einsetzbar. Ein Rechtsklick auf ein Bild lässt Sie nun aus beiden Drehbefehlen auswwählen.

Eigene Menüs erstellen.

Mit Exec können Sie jede ausführbare Datei, also jedes Programm Ihres Linux-Systems aufrufen -- auch selbst erstellte Shell-Skripte. Wollen Sie einfach mehrere Programmschritte ausführen, setzen Sie diese in Anführungszeichen: Exec=/bin/sh -c "IHRE KOMMANDOS". Tabelle 1 zeigt einen Überblick über die wichtigsten Variablen, die Sie beim Exec-Befehl verwenden können. Eine vollständige Übersicht finden Sie auf [3]. (fan)

Abb. 2: Das Servicemenü im Kontextmenü des Konquerors..
Tabelle 1: Variablen von Exec-Parametern
%uEinzelner Dateiname inklusive vollständigen Pfad
%UListe von Dateinamen inklusive vollständigem Pfad
%nDateiname (ohne Pfad)
%NListe von Dateinamen (ohne Pfad)
Infos
[1] Servicemenü-Tutorial: http://developer.kde.org/documentation/tutorials/dot/servicemenus.html
[2] ImageMagick Homepage: http://www.imagemagick.org
[3] Exec-Parameter: http://www.freedesktop.org/standards/desktop-entry-spec/0.9.4

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-01-25 17:20

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]