@bluelupo
hab jetzt nochmals gegoogelt und folgenden Befehl ausgegraben:
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\/\\//g')'"
Funktioniert! Nur leider kenne ich mich zu wenig aus um diese ganzen slashes und backslashes zu verstehen ...
Hi wodga,
sieht komplizierter aus als es ist, KDE liefert in %F einen String
"/pfad1/datei1 /pfad2/datei2 /pfad3/datei mit leerzeichen3"
und icedove wird in dieser Form aufgerufen:
icedove -compose "attachment='/pfad1/datei1,/pfad2/datei2,/pfad3/datei mit leerzeichen3'"
Der Streameditor sed wandelt dabei " /" in ",/" um. Da aber Slash und Space spezielle Bedeutungen haben, müssen sie per Backslash maskiert (escaped) werden - und da das ganze durch die Shell geschleust wird, die den Backslash auch gesondert behandelt, muss der Backslash auch nochmal "escaped" werden, daher die doppelten \\
Dein Code hat übrigens am Ende ein "\\/" zuviel, also statt
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\/\\//g')'"
das sowas erzeugt
"/pfad1/datei1,//pfad2/datei2,//pfad3/datei mit leerzeichen3"
ist es so korrekt:
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\//g')'"
Ciao, Martin
P.S.: Man kann sich die Sache natürlich auch einfacher machen, indem man statt des Delimiters "/" fürs Ersetzen ein anderes Zeichen nimmt, z.B. ":". Von perl kannte ich's, ist aber auch bei sed möglich.
Exec=icedove -compose "attachment='$(echo %F | sed 's: /:,/:g')'"
siehe auch:
http://en.wikipedia.org/wiki/Leaning_toothpick_syndrome