KDE-Servicemenu für meld

Warum meld?

Durch den Entschluss von Canonical, Unity als Standard-Oberfläche einzusetzen, war meine Umstellung auf KDE die Folge. Für die meisten Anwendungen bietet KDE sogar die besseren alternativen an. Leider gibt es aber auch Anwendungen, wo man unter KDE vergeblich eine alternative findet. Eine davon ist meld (http://meldmerge.org). Es gibt unter KDE schon die Tools kompare und kdiff3, diese können aber meld in Sachen Usability nicht das Wasser reichen.

Das Problem

Es ist es ohne weiteres möglich meld unter KDE auszuführen, allerdings fehlt die Unterstützung für das Kontextmenü im Dateimanager Dolphin. Für eine einfache und schnelle Bedienung wäre diese Funktion aber sehr hilfreich.

Die Lösung

Zum Glück ist es unter KDE relativ einfach das Kontextmenü anzupassen. Hierzu benötigt man eine Datei mit der Endung .Desktop, welche man mit einem Editor erstellen kann.

Als Speicherort stehen 2 Pfade zur Auswahl. Einmal den Pfad ~/.kde4/share/kde4/services/ServiceMenus/ für den lokalen Benutzer oder den Pfad /usr/share/services/ServiceMenus/ wodurch das Kontextmenü für alle Benutzer sichtbar wird. Sicherhheitshalber kann man mit dem nachfolgenden Befehl die Pfade prüfen.

kde4-config --path services

Der Inhalt dieser Datei bekommt folgenden Inhalt.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=inode/directory;application/octet-stream;
Actions=setArg1;diff;_SEPARATOR_;selected;
X-KDE-Priority=TopLevel
X-KDE-Submenu=Meld menu
X-KDE-Submenu[de]=Meld Menü
X-KDE-Submenu[es]=Meld menú

[Desktop Action setArg1]
Icon=meld
Exec=echo "%U" > /tmp/meld-menu-arg1
Name=Set file/folder
Name[de]=Setze Datei/Ordner
Name[es]=Marcar archivo/carpeta

[Desktop Action diff]
Icon=meld
Exec=ARG1=$(cat /tmp/meld-menu-arg1);meld "$ARG1" %U;
Name=Compare with file/folder
Name[de]=Vergleiche mit Datei/Ordner
Name[es]=Comparar con el archivo/carpeta marcado

[Desktop Action selected]
Icon=meld
Exec=meld %U;
Name=Compare selected files/folder
Name[de]=Vergleiche ausgewählte Dateien/Ordner
Name[es]=Comparar los archivos/carpetas seleccionadas

Durch den Punkt X-KDE-Priority=TopLevel wird der Menüeintrag auf oberster Ebene angezeigt. Ist dies nicht gewünscht kann man den Eintrag auch weglassen. Der Menü erscheint dann unter Aktionen.

Die übrigen Punkte sind denke ich weitgehend selbstklärend. Nach einem Neustart von Dolphin sollte das Servicemenü als Auswahl (rechte Maustaste) erscheinen.

KDE-Servicemenü für Meld

Sollte es Probleme geben, in welcher Form auch immer, kann es helfen die Berechtigungen der Datei zu überprüfen. Des weiteren sollte meld natürlich installiert sein. Das erste Argument wird zur Zwischenspeicherung in /tmp/ abgelegt. Folglich benötigt man für dieses Verzeichnis natürlich auch Zugriffsrechte.

Funktionsweise

Um die Dateien an meld zu übergaben, hat man nun zwei Möglichkeiten.

Variante A

Mit der rechten Maustaste auf eine Datei oder einen Ordner geklickt wird mit dem Menüpunkt "Setze Datei/Ordner" das erste Argument zum Vergleichen gesetzt. Im Hintergrund wird die Datei/Ordner als Variable im Verzeichnis /tmp zwischengespeichert.

Bei einer anderen Datei oder einem anderen Ordner wird nun mit dem Menüpunkt "Vergleiche mit Datei/Ordner" ein 2-Wege-Vergleich dieser beiden gestartet. Hierzu wird im Hintergrund das erste Argument ausgelesen und mit dem aktuell angegebenen verglichen.

Vorteile:

Nachteile:


Variante B

Für diese Variante werden in Dolphin zunächst bis zu drei Dateien oder Ordner markiert. Mit dem Menüpunkt "Vergleiche ausgewählte Dateien/Ordner" wird diese Auswahl an meld übergeben.

Vorteile:

Nachteile:


Download

meld-menu.desktop


Anmerkung

Für diese Anleitung habe ich Kubuntu 12.10 (64bit) verwendet. Da KDE ja nicht auf Kubuntu beschränkt ist, sollte es mit anderen Derivaten genauso oder zumindest ähnlich funktionieren.

Nützliche Quellen