Eigene Kontextmenüs im Konqueror erstellen

Ich bin ein fauler Mensch. Das war ich, glaubt man meinen Eltern, schon immer. Als ein solcher sind mir wiederkehrende Tätigkeiten zuwider. Wenn ich einzelne Bilder skalieren möchte, um sie auf eine handliche Einheitsgröße zu bringen, (z.B. 640x480) habe ich diese bisher entweder im Gimp geöffnet und skaliert oder auf der Kommandozeile mittels Imagemagick angepasst.

Ich bin ein fauler Mensch. Und als ein solcher waren mir die acht Klicks (im Gimp) bzw. die Tasten-Drückereien auf der Kommandozeile (das Öffnen der Shell nicht zu vergessen!) bereits zuviel.

Was tun?

Als erstes fielen mir die Kontextmenüs im Konqueror zum Links- und Rechtsrotieren von Bildern auf. Das wäre doch was für mich... Warum sollte so etwas nicht auch für das Skalieren zu verwenden sein?

Der geneigte Leser wird jetzt anmerken: »Welche Kontextmenüs zum Rotieren von Bildern?«

Nun, zumindest in Knoppix 3.3 stehen diese zur Verfügung. Aber was tun, um eigene Funktionen im Konqueror zu integrieren?

Erst einmal googeln, und tatsächlich: seit KDE 3.1 lassen sich solche Dinge tatsächlich selbst erstellen: Die Seiten Creating Konqueror Service Menus und Añadir comandos al menú contextual de Konqueror enthalten alle nötigen Informationen.

Habe ich bereits erwähnt, daß ich ein fauler Mensch bin? Um anderen, ebenfalls so veranlagten, Menschen die Erstellung zu vereinfachen, hier eine Zusammenfassung:

1. Erstellen des Servicemenu-Verzeichnisses

mkdir ~/.kde/share/apps/konqueror/servicemenus oder über Konqueror.

2. Erstellen einer einfachen Textdatei in diesem Verzeichnis mit dem Namen XXXXXX.desktop, wobei XXXXXX für einen beliebigen Namen steht, wobei der Name am besten 'sprechend' ist, z.B. scaleImage.desktop oder bildSkalieren.desktop (über rechte Maustaste, Neu, Textdatei)

Diese Datei wird jetzt mit dem bevorzugten Text-Editor geöffnet und folgender Inhalt hineinkopiert:

[Desktop Entry]
ServiceTypes=image/jpeg
Actions=reSize640x480

[Desktop Action reSize640x480]
Name=Skalieren auf 640x480
Icon=images
Exec=mogrify -resize 640x480! %U
Terminal=false
Type=Application

und abgespeichert (die Erläuterung der Einträge erfolgt später). Danach kann im Konqueror ein JPEG-Bild mit der rechten Maustaste angeklickt werden, und es erscheint ein neues Kontextmenü mit der Bezeichnung »Skalieren auf 640x480«. Wird dieser Eintrag angeklickt, wird diese JPEG-Datei mit dem Programm mogrify (im Paket von Imagemagick enthalten) unabhängig von der Orginalgröße auf die Größe 640x480 Pixel skaliert (d.h. eventuell auch verzerrt). In diesem Beispiel wird keine Sicherheitskopie der Orginaldatei erstellt!

So, was geht hier jetzt eigentlich ab? Nehmen wir uns zunächst den ersten Teil der erzeugten Datei vor:

[Desktop Entry]
ServiceTypes=image/jpeg
Actions=reSize640x480

Diese drei Zeilen sind Pflicht für jeden eigenen Kontextmenü-Eintrag: [Desktop Entry] kennzeichnet den Beginn eines neuen Kontextmenü-Eintrags. ServiceTypes=MIMETYPE(,MIMETYPE(,MIMETYPE...)) legt fest, bei welcher Art von Dateien dieser Kontextmenü-Eintrag im Konqueror anzuzeigen ist: ServiceTypes=image/jpeg bezieht sich z.B. ausschliesslich auf Dateien im JPEG-Format, ServiceTypes=image/jpeg,image/png auf Dateien im JPEG- und PNG-Format und ServiceTypes=image/jpeg,image/png,image/gif zusätzlich auf GIF-Formate. Ab KDE 3.2 ist auch die Angabe von ServiceTypes=image/* zulässig, das bezieht sich dann auf alle Bildformate. Die zulässigen Mimetypes kann der geneigte Leser übrigens im Konqueror im Menü »Einstellungen« unter »Konqueror einrichten/Dateizuordnungen« herausfinden. Zwischen den verschiedenen MIME-Typen darf sich nur ein Komma, kein Leerzeichen befinden!

Actions=reSize640x480 verweist schließlich auf einen weiteren Abschnitt in der soeben erstellten XXXXXX.desktop-Datei, in dem dann festgelegt wird, was bei einem Klick auf den neu erzeugte Kontextmenü-Eintrag passieren soll. Falls ihr für die definierten MIME-Typen mehrere verschiedene Funktionalitäten anbieten wollt, könnt ihr das in einem Schwung definieren: Die Zeile Actions=reSize640x480;Actions=reSize1024x768 sorgt dafür, dass zwei Einträge im Kontextmenü erscheinen, die auf die Abschnitte reSize640x480 und reSize1024x768 verweisen. Auch hier gilt: keine Leerzeichen, der ';' als Trenner.

Hier folgt nun der Abschnitt, der die jeweils gewünschte Funktion durchführen soll:

[Desktop Action reSize640x480]
Name=Skalieren auf 640x480
Icon=images
Exec=mogrify -resize 640x480! %U
Terminal=false
Type=Application

Die Zeile [Desktop Action reSize640x480] kennzeichnet den Beginn der gewünschten Funktion und enthält den eindeutigen Namen, auf den wir im vorherigen Abschnitt mittels Actions=reSize640x480 verwiesen haben. Das Ganze kann natürlich auch anders heissen, z.B. [Desktop Action nochnBier]. Dann sieht der Verweis darauf im ersten Abschnitt so aus: Actions=nochnBier.

Zu beachten ist, dass hier die Groß- und Kleinschreibung berücksichtigt wird, also würde der Verweis von Actions=WASISLOS auf [Desktop Action wasIsLos] nicht funktionieren!

Die Zeile Name=Skalieren auf 640x480 legt den Text des Kontextmenü-Eintrages fest. Klar sind wir hier auch mit der Wahl des Textes frei, doch macht z.B. ein Eintrag Name=Total krass Bild zu gross: runter auf 640x480 wirklich Sinn? OK, vielleicht nicht Sinn, aber Spass....;-)

Die Zeile Icon=images definiert das im Kontextmenü anzuzeigende Icon. Wollt ihr kein Icon anzeigen, setzt einfach Icon=, dann kriegt ihr auch keins. Ich selbst habe mir passende Icon-Bezeichnungen über das Konqueror-Kontextmenü einer beliebigen Datei gesucht (Eigenschaften, dass auf das große Icon Klicken, im nachfolgenden Dialog bei System-Symbole die »MIME-Typen« auswählen und entsprechend einen Namen aussuchen)

Die Zeile Exec=mogrify -resize 640x480! %U ist dann für die eigentliche Funktion zuständig. In diesem Fall wird das programm mogrify aus dem Paket imagemagick ausgeführt. Die möglichen Optionen für mogrify lese bitte jeder selbst in der Manpage nach (ich bin faul).

Wichtig im Zusammenhang mit dem Konqueror ist der Parameter %U. (Weitere Parameter sind bei freedesktop.org zu finden.) Der Parameter %U (grossgeschrieben) steht für alle in diesem Moment ausgewählten Dateien. D.h. ihr könnt auch mehrere (markierte) Dateien auf einen Schlag skalieren.

Die beiden Zeilen Terminal=false und Type=Application habe ich einfach mal »blind« aus anderen Dokumentationen übernommen. Ich vermute, man kann durch Terminal=true ein eigenes Terminal-Fenster öffnen, ich war aber zu faul, alle Möglichkeiten durchzuprobieren.

Weitere Möglichkeiten

Ihr seid polyglott?

OK, wenn ihr also je nach Benutzer und dessen Sprache passende Kontextmenü-Einträge erzeugen wollt, dann macht folgendes:

[Desktop Action rotieren]
Exec=mogrify -rotate 90 %u
Icon=image
Name=rotieren 90º
Name[us]=rotate 90º
Name[es]=rotar 90º

Damit würde der Kontextmenü-Eintrag für ein Bild bei der Default-Einstellung der Sprache auf Deutsch erscheinen (»rotieren 90°«), bei amerikanischer Einstellung als »rotate 90°«, und für die spanische Sprache als »rotar 90°«.

Einsatzmöglichkeiten

Wie wäre es z.B. damit, eine *.wav-Datei über das Kontextmenü in eine MP3-Datei umzuwandeln?

Oder eine CD aus einer Image-Datei zu brennen? Oder eine DivX-Datei in AVI zu wandeln? Oder eine eigene Rubrik für die Servicemenüs auf http://www.kdelook.org/ zu initiieren? (Kennt jemand SuperKaramba? geiles Teil!)

Lizenz

Dieser Artikel kann frei verwendet und im Original oder in modifizierter Form weiter verbreitet werden, sofern der Autor genannt wird und der Copyright-Hinweis erhalten bleibt.

Copyright (C) <frank AT derengelfrank DOT de> Erschienen auf Pro-Linux, letzte Änderung 2003-12-21

Konqueror/KontextMenü (zuletzt geändert am 2007-12-23 22:45:36 durch localhost)