Anhang versenden per Rechtsklick

Started by wodga, 2014/10/07, 23:22:51

Previous topic - Next topic

wodga

Ich möchte aus dolphin (kde) heraus per Rechtsklick eine oder mehrere Dateien mit icedove versenden.

Mein Skript sieht so aus: http://pastebin.com/L9uz82br

Es funktioniert leider nur mit einer Datei. Wie übernimmt das skript auch mehrere Dateien?

64bit, intel i5, GeForce GTX 650 Ti

bluelupo

Hi wodga,
Probier mal statt %F %N.

wodga

Leider funktioniert %N genausowenig.
64bit, intel i5, GeForce GTX 650 Ti

der_bud

Ohne das ich jetzt verstehe was horo da macht :o, aber hilft dir vielleicht das studieren des Posts Sending images from shotwell to icedove ?
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.

bluelupo

#4
@wodga: funktioniert der Aufruf von der Kommandozeile aus mit mehreren Anhängen?

EDIT: das habe ich noch im Netz zum Thema gefunden, vielleicht hilft es weiter http://www.kbrandt.com/2008/05/quick-tip-tunderbird-email-from-command.html

wodga

@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 ...
64bit, intel i5, GeForce GTX 650 Ti

horo

#6
Quote from: wodga on 2014/10/15, 17:37:58
@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
omnia vincit pecunia :(

wodga

Danke für die Ausführungen! Werd ich mal in Ruhe studieren :-)
64bit, intel i5, GeForce GTX 650 Ti