Zip-Player spielt Musik aus Zip-Archive: Teil 2
von Daniel Meiß-Wilhelm (Leiche)
In der Mai Ausgabe des neuen PCLinuxOS Magazins, haben wir gelernt, wie man ein Script erstellt, um Musik mit XMMS aus Zip-Archiven abzuspielen.
Bevor wir nun starten, habe ich noch ein Nachtrag für den letzten Artikel: Ich vergaß diese Zeile zu schliessen:
SAVE=$(kdialog --title "zip-player" --getopenfilename "open…"
Richtig ist:
SAVE=$(kdialog --title "zip-player" --getopenfilename "open…")
Nun werden wir ein Servicemenu für KDE 4 erstellen.
Was ist ein Servicemenu?
Das Servicemenu ist ein Eintrag für das Rechtsklick Menü (Kontextmenu) und hilft dabei Anwendungen einfacher zu starten, außerdem können weitere spezielle Funktionen bei bestimmten Dateien integriert werden.
Wenn Sie nur für sich ein Servicemenu erstellen wollen, reicht es wenn Sie es in das folgende Verzeichnis speichern:
/home/<user>/.kde4/share/kde4/services/ServiceMenus/.
Wenn Sie das Servicemenu für alle Benutzer bereit stellen möchten, so speichern sie das Textdokument unter dem Verzeichnis /usr/share/kde4/services/ServiceMenus/ Das Dokument sollten sie speichern als zip_player.desktop.
Was sollte in dem Dokument stehen?
Wenn wir eine andere .desktop Datei öffnen, als Beispiel die dropbox.desktop mit Kwrite, so sehen wir:
und das Rechtsklick Menü sieht wie folgt aus:
In der ersten Zeile finden wir [Desktop Entry] als Kopfzeile und darunter befinden sich weitere Einträge:
Type=Service ServiceTypes=KonqPopupMenu/Plugin MimeType=all/all; Actions=getPublicURL;copyPublicURL; X-KDE-Submenu=Dropbox X-KDE-StartupNotify=false X-KDE-Priority=TopLevel
Als erstes müssen wir einige Einträge ändern:
Type=Service Name=Zip_Player Encoding=UTF-8 ServiceTypes=application/zip Actions=zip_player X-KDE-ServiceTypes=KonqPopupMenu/Plugin MimeType=all/allfiles;
Anmerkung: Es ist völlig egal in welcher Reihenfolge die Einträge stehen.
Wir benötigen nicht alle Einträge und somit löschen wir X-KDE-Submenu=Dropbox, da wir nur einen Eintrag für unser Servicemenu haben. X-KDE-Priority=TopLevel wird auch nicht mehr benötigt. Die ServiceTypes ändern wir in application/zip. Auch fügen wir Encoding=UTF-8 hinzu. Bei den Eintrag MimeType=all/allfiles; wird unser Servicemenu bei allen Dateien im Rechtsklick Menü angezeigt. Die Actions=zip_player Zeile ist Namensgeber und bestimmt die nächsten Einträge.
[Desktop Action zip_player] Name=Zip Player GenericName=Zip_Player Exec=zip_player Icon=xmms.png
In diesem Abschnitt der Kopfzeile lesen wir Desktop Action zip_player, die eigentliche Aktion für das Servicemenu.
Name=Zip Player zeigt den Namen Zip Player beim öffnen des Servicemenu in KDE 4 an.
GenericName=Zip_Player wird nicht benötigt und wird auch nicht auf dem Desktop angezeigt.
Exec=zip_player gibt das auszuführende Programm an. (Normalerweise befindet es sich in /usr/bin, ist es nicht in /bin, so müssen Sie das Verzeichnis zu dem Programm /home/USER/documente/zip_player mit angeben).
Icon=xmms.png zeigt ein Symbol im Rechtsklick Menü an.
Wenn Sie es in ihrem Homeverzeichnis gespeichert haben
.kde4/share/kde4/services/ServiceMenus/,
und nun mit einem Rechtsklick auf ein Ziparchiv klicken, wird das neu erstellte Servicemenu unter "Aktion > Zip Player" angezeigt. Fühlen Sie sich frei es anzuklicken, aber was ist das?
Wieso wird der Dateien Browser geöffnet?
Es soll doch nun das Archiv mit XMMS öffnen und nicht den Dateien Browser. Also benötigt unser Script ein paar Veränderungen führen wir diese durch. Öffnen Sie das Script mit Kwrite:
#!/bin/bash # mkdir $HOME/.zplayer SAVE=$(kdialog --title "zip-player" --getopenfilename "open…" unzip $SAVE -d $HOME/.zplayer && xmms $HOME/.zplayer && rm -fr $HOME/.zplayer | exit
Als erstes (wo habe ich nur mein Kopf) fügen wir Encoding=UTF-8 hinzu, somit wird die korrekte Schriftart gesetzt.
#!/bin/bash # Encoding=UTF-8 mkdir $HOME/.zplayer SAVE=$(kdialog --title "zip-player" --getopenfilename "open…" ) unzip $SAVE -d $HOME/.zplayer && xmms $HOME/.zplayer && rm -fr $HOME/.zplayer | exit
Wir benötigen als Funktion den FileOpenParameter. Kurze Rede langer Sinn, fügen Sie die folgenden Zeilen in das Script ein:
usage () { echo "No File" exit 1 } # if [ $# -eq 0 ]; then usage fi # FileOpenParameter="$1" #
und löschen Sie:
SAVE=$(kdialog --title "zip-player" --getopenfilename "open…" )
In dieser Zeile ändern wir $SAVE in "$FileOpenParameter".
Unser Script sieht nun wie folgt aus:
Encoding=UTF-8 #Funktion usage () { echo "No File" exit 1 #Beendet Script } # if [ $# -eq 0 ]; then usage fi # FileOpenParameter="$1" # if [ ! -d $HOME/.zplayer ]; then mkdir $HOME/.zplayer fi #Archiv entpacken in Ordner, öffnen mit xmms, nach Beendigung Ordner löschen. unzip "$FileOpenParameter" -d "$HOME/.zplayer" && xmms $HOME/.zplayer && rm -fr $HOME/.zplayer | exit # exit 0
Speichern Sie es und versuchen Sie erneut ein Zip-Archiv mit Zip Player zu öffnen. Es sollte nun gehen.