Servicemenü für den KDE Dateimanager Dolphin individuell erweitern

Mit Hilfe der Kommandozeilentools md5sum und sha256sum kann man in einer Konsole sehr einfach die Prüfsumme einer Datei ermitteln. Das ist z.B. beim Download einer Datei wichtig um deren Integrität festzustellen. Beim ISO-Abbildern einer Linux-Distribution werden in der Regel immmer MD5- oder SHA256-Prüfsummen angegeben damit die Downloads entsprechend überprüft werden können.

Um sich das Erstellen einer md5sum oder sha256sum Prüfsumme zu erleichtern kann man eigene individuelle Servicemenüs im Dateimanger Dolphin erstellen bzw. erweitern. Der Speicherort für diese Servicemenüs ist in /usr/share/kservices5/ServiceMenus, damit sehen alle KDE-User diese selbsterstellten Einträge. Wer das nur auf einen User bezogen erstellen will legt die Servicemenüs /home/$USER/.local/share/kservices5/ServiceMenus ab ($USER an eigene Gegebnheiten anpassen).

Diese Konfigurationsdateien müssen auf die Dateiendung _.desktop enden, ansonsten ist die Bezeichnung im vorderen Teil beliebig.

Ziel soll sein, das bei einen Rechtsklick auf eine oder mehrere Dateien im Kontextmenü des KDE Dateimanagers Dolphin, zwei Einträge erscheinen die die MD5- bzw. SHA256-Prüfsumme anzeigen sollen.

  • MD5 Prüfsumme ermitteln
  • SHA256 Prüfsumme ermitteln


kdialog 01


Mit Hilfe der Konfigurationsdatei, die ich checksum.desktop genannt habe, werden die Einträge im Kontextmenü definiert. Die Konfigurationsdatei ist in zwei Teile aufgebaut den [Desktop Entry] und die [Desktop Action]. Im ersteren (Desktop Entry) werden die allgemeinen Teile definiert im zweiten (Desktop Action) wird das Icon, der Text der Kontextmenü erscheinen soll, sowie die dahinter stehende Aktion (Exec) beim Auswahl des Menüeintrages.

Wichtig sind die Einträge MimeType, der hier auf alle Dateien zutreffen soll, Actions der die jeweilige Desktop Action aufruft sowie X-KDE-Priority der den Eintrag direkt in der ersten Ebene des Kontextmenüs anzeigen soll.

Jeweils im Abschnitt Desktop Action beim Schlüsselwort Exec wird ein Shellscript aufgerufen das mit Hilfe von Kdialog eine Dialogbox am Bildschirm anzeigt.

Listing der Konfigurationsdatei /usr/share/kservices5/ServiceMenus/checksum.desktop.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=all/all
Actions=md5sum;sha256sum
Encoding=UTF-8
X-KDE-Priority=TopLevel
#
[Desktop Action md5sum]
Icon=checkbox
Name=MD5 Prüfsumme ermitteln
Exec=/usr/local/scripts/run_checksum.sh md5sum “%U”
#
[Desktop Action sha256sum]
Icon=checkbox
Name=SHA256 Prüfsumme ermitteln
Exec=/usr/local/scripts/run_checksum.sh sha256sum “%U”

Der erste Aufrufparameter hier Beispiel md5sum wird im Shellscript benutzt um eine Fallunterscheidung zu treffen. Der zweite Aufrufparameter ”%U” enthält alle markierten Dateien.

Exec=/usr/local/scripts/run_checksum.sh md5sum "%U"

Hier das Listing des Shellscriptes (Dateiname: run_checksum.sh)

#!/bin/bash
#
TMP_FILE=/tmp/checksum.tmp
#
#_der erste Übergabeparameter enthält den Wert des Checksum-Tools (md5sum oder sha256sum)
CHECKSUM_PROG=$1
#
#_evtl. vorhandenes temporäres File löschen
if [ -e “$TMP_FILE” ]
        then
        rm $TMP_FILE
fi
#
#_Schleife um alle alle markierten Dateien des zweiten Übergabeparameters mit mdsum
#_oder sha256sum zu bearbeiten. Die Ausgabe wird in eine Datei $TMP_FILE umgeleitet.
#
for FILE in $@
        do
        $CHECKSUM_PROG $FILE >> $TMP_FILE
done
#
#_Ausgabe der Prüfsummen aller überprüften Dateien mit Hilfe einer kdialog Dialogbox
kdialog –title “$CHECKSUM_PROG Prüfsumme” –textbox $TMP_FILE 900 200
#
#temporäres File wieder löschen
rm $TMP_FILE


Führt man diese Aktion, wie obigen Screenshot gezeigt, auf die Dateien datei1 und datei2 aus und wählt den Eintrag MD5 Prüfsumme ermitteln wird folgende Dialogbox angezeigt.

kdialog 02


Bei Auswahl des Menüpunktes SHA256 Prüfsumme ermitteln sieht die Dialogbox wie abgebildet aus.

kdialog 03


Wer dies bei sich ebenso einrichten will kann einfach per Copy&Paste die beiden Dateien, run_checksum.sh (Ablagepfad ggf. an eigene Gebenheiten anpassen) und checksum.desktop in den jeweiligen Verzeichnissen anlegen.

Dateirechte:

# ls -ld /usr/share/kservices5/ServiceMenus/checksum.desktop 
-rw-r--r-- 1 root root 397 Okt  6 13:01 /usr/share/kservices5/ServiceMenus/checksum.desktop
# ls -ld /usr/local/scripts/run_checksum.sh 
-rwxr-xr-x 1 root staff 259 Okt  6 13:01 /usr/local/scripts/run_checksum.sh


Weitere Informationen:

Development/Tutorials/Shell Scripting with KDE Dialogs (de)