Kontextmenü für Dolphin erstellen

  Prof.P   Lesezeit: 6 Minuten  🗪 2 Kommentare

Eine Anleitung, um im KDE-Dateimanager ein Kontextmenü für Audio/Video-Dateien einzurichten.

kontextmenü für dolphin erstellen

Dieser Artikel beschreibt die Erstellung eines eigenen Kontextmenü-Eintrags für den KDE Plasma Dateimanager Dolphin am Beispiel der Konvertierung von Audio/Video-Dateien.

Grob gesagt, lässt sich der Vorgang in drei Schritte einteilen.

  1. Erstellen der Datei, die die Befehle/Aufrufe enthält

  2. Ermitteln des Dolphin Kontextmenü-Verzeichnisses

  3. Kopieren der Befehls-Datei in das Kontextmenü-Verzeichnis

Details und Beispiele:

  1. Zuerst wird die Datei (im Desktop-Format) erstellt, die definiert, was auf der/den selektierten Datei(en) ausgeführt werden soll.

Erstellen der Datei audioConverterMenu.desktop; als Beispielsdatei kann diese verwendet werden.

Zum Holen der Beispieldatei gibt es diverse Möglichkeiten:

  • Kopieren des Inhalts über das Webinterface in die Zwischenablage
  • Klonen des Repos mit: git clone https://codeberg.org/rubinski/my_files.git
  • Datei im Originalformat direkt herunterladen mit: curl https://codeberg.org/rubinski/my_files/raw/branch/main/dolphin_contextmenu/audioConverterMenu.desktop > audioConverterMenu.desktop

Die wichtigsten Zeilen aus der Datei kurz erklärt:

  • MimeType=audio/*;video/*

Hier wird der spezifiziert, für welche Art von selektierten Dateien der Menüeintrag überhaupt erst sichtbar gemacht werden soll. In diesem Fall für alle Dateien vom Typ "Audio" und "Video".

  • Actions=audioConverterToFlac;audioConverterToMp3;audioConverterToMp4

Für jede einzelne Aktion (Semikolon separierte Liste) wird weiter unten eine eigene Gruppe angelegt; der Name ist beliebig wählbar, muss dann aber natürlich mit dem bei Actions verwendeten Namen identisch sein, Bsp. für die Aktion "audioConverterToFlac":

[Desktop Action audioConverterToFlac]
TryExec=ffmpeg
Exec=for file in %F; do output="${file%.*}.flac"; i=1; while [ -e "$output" ]; do output="${file%.*} ($i).flac"; i=$((i+1)); done; ffmpeg -i "$file" -f flac "$output"; done
Name=Convert multimedia file to flac
Name[de]=Konvertiere zu FLAC
Icon=audio
  • Bei Exec wird der tatsächliche Bash-Aufruf eingetragen; in %F steht die jeweils selektierte Datei, respektive Dateien bei Mehrfach-Selektion

  • Bei Name[de] kann ein deutscher Text vergeben werden, der später im Kontextmenü erscheinen wird

  • Bei Icon kann ein vom System verfügbares Icon verwendet werden, welches im Kontextmenü für die jeweilige Aktion eingeblendet wird.

  1. Verwenden des Plasma Shell Kommandos kf5-config --path services, um das kservice-Verzeichnis zu identifizieren. (Ein häufig verwendetes Verzeichnis ist $HOME/.local/share/kservices5/)

  1. Kopieren der zuvor erzeugten Datei audioConverterMenu.desktop in das kservices5/ServicesMenus Verzeichnis, z.B.:

Systemweites Kontextmenü (verfügbar für alle Benutzer des Systems)

sudo cp audioConverterMenu.desktop /usr/share/kservices5/ServiceMenus/

Benutzerspezifisches Kontextmenü (nur verfügbar für den aktuell eingeloggten Benutzer)

cp audioConverterMenu.desktop /$HOME/.local/share/kservices5

Dadurch wird ein neuer Eintrag "Multimedia" im Kontextmenü von Dolphin hinzugefügt, der bei selektierten Audio- und Videodateien sichtbar wird.

Info: Hier verwendete KDE-Plasma-Version: 5.27.9.

Abschließend sei gesagt es gibt wohl auch GUI-Tools die einem diese Aufgaben leichter machen, diese wurden vom Autor dieses Artikels aber nicht verwendet und somit auch nicht auf Plasma-Aktualität oder Funktionalität getestet.

Abhängigkeiten für die im Beispiel verwendeten Konvertierungs-Einträge im Kontextmenü:

  • ffmpeg um Multimedia-Dateien zu konvertieren
  • lame um nach MP3 zu konvertieren

Creating Dolphin Service Menus

Tags

Dolphin, Dateimanager, KDE, Plasma, KDE Plasma, Kontextmenü, Konfiguration

kamome
Geschrieben von kamome am 17. November 2023 um 08:19

Ich glaube, ich musste das Exec-Script noch in einen Bash-Aufruf verpacken – z. B. so (hoffe, der Code kommt korrekt an):

[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/*;
Actions=scaleImage

[Desktop Action scaleImage]
Name=Scale Image
Name[de]=Bild skalieren
Icon=zoom-out
# If 'cancel', does so; if 'no', uses original; if 'yes' (default), uses copy; if copy target already exists, exits.
Exec=/usr/bin/bash -c 'kdialog --title "Mit Kopie arbeiten?" --warningyesnocancel "Eine Kopie erstellen und damit arbeiten?\nSonst wird das Originalbild verändert."; case "$?" in "2") exit;; "1") file="%f";; *) orig_file="%f"; file="%f"; while [ "$file" = "$orig_file" -o -e "$file" ]; do file=$(kdialog --title "Neuer Dateiname" --inputbox "Neuer Dateiname" "$orig_file"); done; [ "" = "$file" ] && exit; cp "%f" "$file";; esac; size=""; while [[ ! "$size" =~ ^[1-9][0-9]+$ ]]; do size=$(kdialog --title "Zielgröße" --inputbox "Zielgröße (maximale Dimension)" "1280"); done; [ "" = "$size" ] && exit; mogrify -quality 75 -resize "$size"x"$size" "$file"'
kamome
Geschrieben von kamome am 17. November 2023 um 08:21

Wie kann man in Bludit (bzw. diesem Kommentar-Teil) denn Code einfügen, damit doppelte Code-Anführungszeichen überleben? TIA