ubuntuusers.de

Versand mit Evolution (Flatpak) aus LibreOffice heraus

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

TobiasH

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 70

Hier (Ubuntu 22.04.4, Libreoffice deb-Paket 7.6.7-0ubuntu0.23.10.1~bpo22.04.1) geht die Versendung von LO-Dokumenten direkt aus LO als Anhang auch nicht mit Evolution als Flatpak. Das Problem liegt also nicht nur bei Thunderbird in Form eines Snaps. Die Lösung von Balu62 funktioniert bei mir nicht.

Moderiert von sebix:

Der Beitrag ist von fehlender Anhang aus LibreOffice per Thunderbird abgetrennt worden. Bitte entführe keine Themen (Verhaltenscodex)!

Balu62

Avatar von Balu62

Anmeldungsdatum:
22. Oktober 2007

Beiträge: 967

Wohnort: Bern / Schweiz

TobiasH schrieb:

Die Lösung von Balu62 funktioniert bei mir nicht.

Na ja, ist ja auch kein Allerweltsheilmittel 😉 Meine Anmerkung war lediglich, dass es - als deb-Installation aus den Quellen - noch nicht funktionieren muss, da eben noch ein Apparmor-Profil existiert, welches das Versenden von Dokumenten aus LO unterbindet. Man sollte schon systematisch vorgehen und erst mal versuchen rauszufinden, was genau passiert. LO ist ja relativ gesprächig, also startet man Writer einfach mal im Terminal und schaut sich dann an, was nach der (gescheiterten) Aktion zurück gemeldet wird. Die Rückmeldung könnte definitiv helfen, das Problem einzugrenzen. Ein Beispiel wie so was aussieht, gibt es im bereits verlinkten Thread etwas weiter unten.

Gruss, Balu

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

... als Anhang auch nicht mit Evolution als Flatpak.

@TobiasH: Wie hast du das denn versucht? LO nutzt doch den Eintrag des "exo-open --launch MailReader"? Bei Applikationen, die in der Flatpak Sandbox laufen, bekommt man das meines Wissens nur mit Tricks hin.

Natürlich kann eine Applikation, die in einer Sandbox läuft nicht auf das normale Filesystem zugreifen. Hier muss man das in Frage kommende Verzeichnis erst für die Sandbox öffnen. Bei Flatpak (z.B. Evolution) geht dies z.B. für das Verzeichnis "~/Downloads" wie folgt:

flatpak document-export --app=org.gnome.Evolution -r -w ~/Downloads

Dann kann man z.B. die Datei "x.odt" aus diesem Verzeichnis automatisiert über den folgenden Befehl an "user@domain.de" verschicken:

flatpak run org.gnome.Evolution evolution "mailto:user@domain.de\
?subject=Mail Versand aus der Command-Line\
&attach=$(flatpak document-info ~/Downloads | sed -n 's/^path: //p')/x.odt\
&body=Dies ist der Mail-Body. Im Anhang x.odt."

Die Randbedingungen mit Thunderbird sollten ähnlich sein.

TobiasH

(Themenstarter)

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 70

Balu62 schrieb: LO ist ja relativ gesprächig, also startet man Writer einfach mal im Terminal und schaut sich dann an, was nach der (gescheiterten) Aktion zurück gemeldet wird. Die Rückmeldung könnte definitiv helfen, das Problem einzugrenzen. Ein Beispiel wie so was aussieht, gibt es im bereits verlinkten Thread etwas weiter unten.

Wenn ich LO im Terminal mit

libreoffice --writer

oder mit

lowriter

starte, dann erhalte ich im Terminal keinerlei Rückmeldung, auch wenn ich zur Laufzeit zum Beispiel ein Dokument aus LO versenden will.

~$ lowriter --version
LibreOffice 7.6.7.2 60(Build:2)

Wie kann ich LO zu der Gesprächigkeit wie im erwähnten Beispiel bringen?

TobiasH

(Themenstarter)

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 70

shiro schrieb:

@TobiasH: Wie hast du das denn versucht? LO nutzt doch den Eintrag des "exo-open --launch MailReader"?

Ich habe in LO ein Dokument geöffnet und dann Datei > Senden > Dokument als Email angeklickt. Es öffnet sich Evolution mit dem Dateinamen im Betreff, aber ohne Datei als Anhang. Ich nehme an, dass "exo-open --launch MailReader" in LO unter Extras > Optionen > Internet > Email steht? Da steht hier "sensible-lomua", und wie erwähnt öffnet sich Evolution aus LO heraus, aber eben ohne den Anhang.

Dann kann man z.B. die Datei "x.odt" aus diesem Verzeichnis automatisiert über den folgenden Befehl an "user@domain.de" verschicken:

flatpak run org.gnome.Evolution evolution "mailto:user@domain.de\
?subject=Mail Versand aus der Command-Line\
&attach=$(flatpak document-info ~/Downloads | sed -n 's/^path: //p')/x.odt\
&body=Dies ist der Mail-Body. Im Anhang x.odt."

Wahrscheinlich verstehe ich hier etwas nicht richtig, aber das erscheint mir aufwendig zu sein für etwas, das eigentlich eine erhebliche Arbeitserleichterung sein soll.

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17201

In diesem Thread geht es nicht um Evolution, nicht um Flatpak und auch nicht um Ubuntu 22.04, also bitte diese OffTopic Diskussion woanders weiter führen.

Balu62

Avatar von Balu62

Anmeldungsdatum:
22. Oktober 2007

Beiträge: 967

Wohnort: Bern / Schweiz

TobiasH schrieb:

starte, dann erhalte ich im Terminal keinerlei Rückmeldung, auch wenn ich zur Laufzeit zum Beispiel ein Dokument aus LO versenden will.

Nun, dann wird es wohl nichts zu melden geben 😉 LO kann TB aufrufen, gibt mit, dass es einen Anhang gibt und schmeisst den ins tmp. Aus Sicht LO also alles in Ordnung und somit nichts zu meckern. Das der Snap-TB die Datei in tmp nicht abholen kann, dürfte LO herzlich egal sein. AUs LO SIcht läuft das so wie es soll, also kein Grund eine Fehlermeldung auszugeben. Somit deutet auch das auf Snap. Kann ich aber, mangels Snap, nicht nachvollziehen. Apparmor scheint auf jeden Fall auch nichts zu blocken, denn das würde LO ausgeben.

Gruss, Balu

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

In diesem Thread geht es nicht um Evolution, nicht um Flatpak und auch nicht um Ubuntu 22.04, also bitte diese OffTopic Diskussion woanders weiter führen.

Da offenbar der Thread abgetrennt wurde, ist es wohl erlaubt, eine Lösung für das Problem zu skizzieren, das nicht nur für das Zusammenspiel mit LO sondern auch anderen Applikationen wie dem Datei-Explorer mit rechte Maustaste und "Senden an" → "E-Mail Empfänger" zutrifft.

Bei einer .deb Installation tritt sowieso kein Problem auf, nur bei den "Sandbox" Applikationen wie "Flatpak". Nur, die .deb Pakete sind uralt und decken einige Anforderungen nicht ab. Die neusten Versionen von "evolution" sind daher stets über "Flatpak" zu nutzen.

Die Lösung hatte ich in meinem vorherigen Post bereits skizziert. Allerdings hat mich die Bemerkung:

Wahrscheinlich verstehe ich hier etwas nicht richtig, aber das erscheint mir aufwendig zu sein für etwas, das eigentlich eine erhebliche Arbeitserleichterung sein soll.

etwas irritiert und mich dazu veranlasst, die Vorgehensweise etwas "mundgerechter" zu beschreiben.

Da in "lowriter" mit Klick auf "Datei" → "Senden" → "Dokument als eMail ..." (o.Ä.) das aktuelle Dokument per Mail verschickt werden soll, wird das unter "Standardanwendungen" definierte "E-Mail-Programm" verwendet. Bei der "Flatpak-Evolution" Installation ist hier keine "Evolution" Eintrag vorhanden (daher meine obige Frage). Um für das "Verfassen von E-Mails" über diesen Weg auch "evolution" nutzen zu können, trägt man nach Klick auf das Drop-Down Feld die Zeile "Andere ..." an. Es öffnet sich ein Pop-Up Fenster (Benutzerdefiniertes E-Meil-Programm auswählen), bei dem man KEIN bestehendes Programm auswählt sondern in die Eingabezeile ein zu verwendendes Script einträgt wie z.B. /home/user/bin/evolution.sh "%s". Natürlich sollte hier der "user" nach "/home" mit dem eigene Benutzername eingetragen sein.

Das dort eingetragene Script kann mit folgendem Inhalt an dem angegebenen Verzeichnis erstellen:

#!/bin/bash
# Dieses Script wird bei "send" Befehlen aufgerufen, um eine Mail mit Anhang zu
# erstellen. Der übergebene Parameter 1 hat dabei z.B. den folgenden Aufbau:
# $1="?subject=lowriter&attach=file:///tmp/lu2827961eik.tmp/lu2827961eit.tmp/lowriter.odt"
#
# Das Verzeichnis "/tmp" ist in diesem Beispiel wegen der Sandbox nicht direkt 
# aufrufbar. Es muss daher eine Sandbox-Freigabe in der folgenden Form passieren:
# $ flatpak document-export --app=org.gnome.Evolution -r -w /tmp
# Das "/tmp" Verzeichnis muss durch den Übergabe-Pfad der Sandbox ersetzt werden.
# Diesen Pfad erhält man z.B. durch folgenden Aufruf:
# $ flatpak document-info /tmp
# id: 6fce56cl
# path: /run/user/1000/doc/6fce56c4/tmp
# origin: /tmp
# permissions:
# 	org.gnome.Evolution	read, write

p1="$1"
app="org.gnome.Evolution"
# freigegebene Verzeichnisse suchen
arrSBpath=( $(find /run/user/$(id -u)/doc/by-app/$app/ -maxdepth 2 -mindepth 2 -type d | xargs) )
arrSBorigin=( )
for d in ${arrSBpath[@]}; do 
 arrSBorigin+=( $(flatpak document-info "$d" | sed -n 's/^origin: \(.*\)/\1/p') ); 
done
np1="$p1"
for((i=0;i<${#arrSBorigin[@]};i++)); do
 if [[ "$p1" =~ "${arrSBorigin[$i]}" ]]; then
  np1=${p1/${arrSBorigin[$i]}/${arrSBpath[$i]}}
  break
 fi
done
np1=${np1/\/by-app\/$app/}

/usr/bin/flatpak run --branch=stable --arch=x86_64 \
--command=evolution org.gnome.Evolution mailto:"$np1"

Das Script sollte ausführbar gemacht werden (z.B. chmod 755 /home/user/bin/evolution.sh, damit es genutzt werden kann.

Mit dem Script wird für die Flatpak-App "org.gnome.Evolution" ermittelt, welche Verzeichnisse im Sandbox-Übergabe-Bereich bereits freigegeben worden sind. Dabei wird der Verzeichnisname des Übergabeverzeichnisses im Array "arrSBpath" und der Original-Verzeichnisname aus Ubuntu im Array "arrSBorigin" vermerkt. Ist in dem Aufrufparameter "p1" ($1) ein Attachment definiert, so muss der Original-Verzeichnis-Name durch den Verzeichnisnamen des Sandbox-Übergabe-Verzeichnisses ersetzt werden, damit man den Übergabeparameter nun mit korrektem Pfad zum Attachment (np1) erhält. Diesen kann man dann gemäß Flatpak Nomenklatur an dem sich in der Sandbox befindlichen "evolution" übergeben.

Falls hierzu noch Fragen existieren, bitte diese zu stellen, damit ich sie beantworten kann.

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17201

Es ist natürlich sehr subjektiv, was aufwendig ist. Dein Vorschlag mag als Behelf gut sein, im Gegensatz zur mir gewohnten Vorgehensweise (ohne flatpak und snap) ist er auch nach meiner Meinung zu aufwendig. Hier mit LO Writer und Thunderbird funktioniert die althergebrachte Vorgehensweise ohne zusätzlichen Aufwand bestens (natürlich ist das kein Ubuntu, und mit Evolution würde das auch ohne flatpak oder snap so funktionieren 😎 ).

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

Es ist natürlich sehr subjektiv, was aufwendig ist.

Wenn das Script erst mal aufgerufen werden kann, ist kein Unterschied in der Bedienung vorhanden. Den Aufwand zur Erstellung/Konfiguration des Scripts muss man einmalig leisten, da bei Sandboxen (snap/flatpak) halt der einfache Zugriff auf Dateien/Verzeichnisse verboten ist.

Mit snap/flatpak macht es sich der Entwickler halt leicht, weil er keine Rücksicht auf die individuellen Ausprägungen des genutzte Betriebssystem nehmen muss. Die Aufgabe, das Programm in einen individuell definierten nutzbaren Zustand zu bekommen, obliegt dann dem Anwender. Personen, die dies nicht wollen/können, dürfen dann halt keine snap/flatpak Applikationen nutzen oder müssen sich damit zufrieden geben, was das Programm liefert.

Ubunux

Avatar von Ubunux

Anmeldungsdatum:
12. Juni 2006

Beiträge: 17201

shiro schrieb:

Personen, die dies nicht wollen/können, dürfen dann halt keine snap/flatpak Applikationen nutzen oder müssen sich damit zufrieden geben, was das Programm liefert.

Oder gleich konsequent Ubuntu meiden, für mich war das der bessere Weg. Das kann ich auch nur jedem empfehlen, denn der zusätzliche Aufwand wird ja nicht geringer in Zukunft, es wird immer mehr SnapApps geben bei Ubuntu, ganz zu schweigen von den eh schon vorhandenen Nachteilen dieser Technik.

TobiasH

(Themenstarter)

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 70

shiro schrieb:

Da offenbar der Thread abgetrennt wurde, ist es wohl erlaubt, eine Lösung für das Problem zu skizzieren, das nicht nur für das Zusammenspiel mit LO sondern auch anderen Applikationen wie dem Datei-Explorer mit rechte Maustaste und "Senden an" → "E-Mail Empfänger" zutrifft.

Die Lösung hatte ich in meinem vorherigen Post bereits skizziert. Allerdings hat mich die Bemerkung:

Wahrscheinlich verstehe ich hier etwas nicht richtig, aber das erscheint mir aufwendig zu sein für etwas, das eigentlich eine erhebliche Arbeitserleichterung sein soll.

etwas irritiert und mich dazu veranlasst, die Vorgehensweise etwas "mundgerechter" zu beschreiben.

Vielen Dank für die Ausarbeitung des Skripts und die ausführliche Erklärung dazu! Leider ist bei mir nach den ersten Versuchen die Anlagenleiste auch mit dem Skript noch leer. Ich werde dem weiter nachgehen, wenn ich demnächst etwas Muße dazu habe. Das Skript ist ja ein sehr konkreter Ansatz.

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

Das Skript ist ja ein sehr konkreter Ansatz.

Allerdings habe ich ein paar "Unschönheiten" gefunden, wenn man Verzeichnisse mit "Blanks" und UTF-8 Zeichen nutzte. Da die freigegebenen Ordner in einem bash-Array gespeichert werden wird das "Blank" ja zur Trennung der Array-Elemente verwendet. Weiterhin enthält der als $1 übergebene Dateiname die "Blanks" und UTF-8 Zeichen in URL-encodierter Form. Das hatte ich zuvor nicht berücksichtigt.

Aus diesem Grund musste ich ein paar kleinere Änderungen durchführen. Sorry.

#!/bin/bash

function urldecode() { x="${1//+/ }"; echo -e "${x//%/\\x}"; }
p1=$(urldecode "$1")

app="org.gnome.Evolution"
arrSBpath=( $(find $XDG_RUNTIME_DIR/doc/by-app/$app/ -maxdepth 2 -mindepth 2 -type d | sed 's/ /%20/g' | xargs) )
arrSBorigin=( )
for d in ${arrSBpath[@]}; do 
 arrSBorigin+=( $(flatpak document-info "${d//%20/ }" | sed -n 's/ /%20/g;s/^origin:%20\(.*\)/\1/p') );
done
p1file=$(sed 's#.*attach=file://\([^&]*\)&*.*#\1#' <<<"$p1")
p1real=$(realpath "${p1file//%20/ }")
np1=$(sed -E "s#(.*attach=file://)([^&]*)([&$].*$)#\1$p1real\3#;s/ /%20/g" <<<"$p1")

for((i=0;i<${#arrSBorigin[@]};i++)); do
 if [[ "$np1" =~ "file://${arrSBorigin[$i]}" ]]; then
  np1=${np1/${arrSBorigin[$i]}/${arrSBpath[$i]}}
  break
 fi
done
np1=${np1/\/by-app\/$app/}

/usr/bin/flatpak run --branch=stable --arch=x86_64 \
--command=evolution org.gnome.Evolution mailto:"$np1"

PS: Ich teste in der Regel das Versenden von Dateien aus dem File-Explorer und habe in der Regel dann das "Phänomen" des nicht eingetragenen Attachments, wenn der Ordner nicht freigegeben worden war. Wenn du diese Probleme debuggen willst, schreib dir den Logfile des Scripts an eine Stelle zum analysieren (also ( set -x; ... ) &>/home/user/send.log)

TobiasH

(Themenstarter)

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 70

Vielen Dank an shiro!

In der parallel laufenden Diskussion zu Thunderbird-snap und LO steht hier https://forum.ubuntuusers.de/post/9433555/ die Lösung, die auch für Evolution-flatpak und LO funktioniert. Ich habe in LO einen temporären Ordner unter /home/$user/ angegeben, und nun werden Anhänge aus LO heraus an eine Email in Evolution gehängt.

Antworten |