Discussion:
cron und grafische Anwendungen
(zu alt für eine Antwort)
Alexander Goetzenstein
2021-02-20 23:25:22 UTC
Permalink
Hallo,
nach einigem Tüfteln habe ich es hinbekommen, aus der crontab des Users
ein Script zu starten, das seinerseits eine grafische Anwendung startet,
hier ist es dolphin. Dies gelingt jedoch nur, wenn ich im Script u.a.
export XAUTHORITY=/run/user/1000/xauth_nepNNX
/usr/bin/dolphin --split --new-window $HOME/Dokumente/$V $HOME/Dokumente/Belege
Das Dumme daran ist, dass $XAUTHORITY keineswegs konstant ist, sondern
nach jedem Systemstart einen anderen Wert annimmt, etwa
XAUTHORITY=/run/user/1000/xauth_jhPLRg
Sicher geht das auch anders und besser, aber mit MetaGer habe ich keine
funktionierende Lösung gefunden. Meist war es in den Erklärungen mit
DISPLAY=:0 getan, oder etwa mit XAUTHORITY=/home/<username>/.Xauthority
-funktioniert (hier™) nur leider nicht.

Wie macht man es richtig?

Ach ja: openSUSE Tumbleweed mit KDE.
--
Gruß
Alex
fritz_s
2021-02-21 16:40:49 UTC
Permalink
Post by Alexander Goetzenstein
Hallo,
nach einigem Tüfteln habe ich es hinbekommen, aus der crontab des Users
ein Script zu starten, das seinerseits eine grafische Anwendung startet,
hier ist es dolphin. Dies gelingt jedoch nur, wenn ich im Script u.a.
export XAUTHORITY=/run/user/1000/xauth_nepNNX
/usr/bin/dolphin --split --new-window $HOME/Dokumente/$V $HOME/Dokumente/Belege
Das Dumme daran ist, dass $XAUTHORITY keineswegs konstant ist, sondern
nach jedem Systemstart einen anderen Wert annimmt, etwa
XAUTHORITY=/run/user/1000/xauth_jhPLRg
Sicher geht das auch anders und besser, aber mit MetaGer habe ich keine
funktionierende Lösung gefunden. Meist war es in den Erklärungen mit
DISPLAY=:0 getan, oder etwa mit XAUTHORITY=/home/<username>/.Xauthority
-funktioniert (hier?) nur leider nicht.
Wie macht man es richtig?
Ach ja: openSUSE Tumbleweed mit KDE.
Wie man es 'richtig' macht kann ich dir nicht sagen, was aber
funktioniert:
tr '\0' '\n' < /proc/$(pgrep kded)/environ | grep XAUTHORITY

HTH
--
fs (***@gmail.com)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wo aber der Wein fehlt, stirbt der Reiz des Lebens. - Euripides
Alexander Goetzenstein
2021-02-21 22:16:52 UTC
Permalink
Hallo,
Post by fritz_s
Wie man es 'richtig' macht kann ich dir nicht sagen, was aber
tr '\0' '\n' < /proc/$(pgrep kded)/environ | grep XAUTHORITY
HTH
das tut es, Danke. Es sieht mir von der Methode auch vernünftig aus.
Wieder was gelernt.
--
Gruß
Alex
Sieghard Schicktanz
2021-02-22 19:53:02 UTC
Permalink
Hallo Alexander,
Post by Alexander Goetzenstein
Post by fritz_s
Wie man es 'richtig' macht kann ich dir nicht sagen, was aber
tr '\0' '\n' < /proc/$(pgrep kded)/environ | grep XAUTHORITY
HTH
das tut es, Danke. Es sieht mir von der Methode auch vernünftig aus.
Wieder was gelernt.
Ja, das tut sowas. Es sieht allerdings durchaus _nicht_ "vernünftig" aus,
sondern mehr nach "von hinten durch die Brust ins Auge".
Da wird in einem Systemverzeichnis (das ggfs. nichtmal für den Benutzer
errecihbar ist) in den Prozessdaten 'rumgeschnüffelt und aus einer
Pseudo-Datei mit prozessinternen und ggfs. kritischen Daten (dem
Environment des Prozesses, d.h. dessen komplette Variablen-Umgebung!)
nach dem .Xauthority-File des aktuellen Display-Benutzers gesucht und das
unkritisch als das aktuelle gesetzt - egal ob das erreichbar ist oder nicht
oder was da sonst an Ungereimtheiten entstehen könnte.
Es "funktioniert" vielleicht meistens, aber sicher nicht, wenn der
aufrufende Benutzer keinen Zugrifff auf /proc, auf den Prozess oder auf das
angesprochene File hat. Und auch wenn alles passt, ist das ggfs. nicht
sicher. Ich würde - möchte - davon abraten.
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Alexander Goetzenstein
2021-02-23 08:04:28 UTC
Permalink
Hallo,
Post by Sieghard Schicktanz
Ich würde - möchte - davon abraten.
wozu möchtest Du denn zuraten?
--
Gruß
Alex
Sieghard Schicktanz
2021-02-23 19:51:11 UTC
Permalink
Hallo Alexander,
Post by Alexander Goetzenstein
Post by Sieghard Schicktanz
Ich würde - möchte - davon abraten.
wozu möchtest Du denn zuraten?
Eigentlich davon, das Unterfangen zu überdenken und einen Weg ohne den
Start eines _Dateimanagers_ aus _cron_ heraus, und zudem offenbar noch
mit "root"-Rechten zu suchen. (Wenigstens letzteres könnte schon ein Aufruf
mittels "sudo" mit Benutzerangabe leisten.)
Ansonsten hast Du doch mehrere andere Methoden genannt bekommen, such' Dir
eine aus, die Du verantworten kannst. Keine davon wühlt in privaten Daten
anderer Prozesse, sondern fragt oder liefert gezielt das Gewünschte.
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Helmut Waitzmann
2021-02-21 20:34:04 UTC
Permalink
Post by Alexander Goetzenstein
nach einigem Tüfteln habe ich es hinbekommen, aus der crontab des
Users ein Script zu starten, das seinerseits eine grafische
Anwendung startet, hier ist es dolphin. Dies gelingt jedoch nur,
wenn ich im Script u.a. die Umgebungsvariable XAUTHORITY
export XAUTHORITY=/run/user/1000/xauth_nepNNX
[…]
Post by Alexander Goetzenstein
Das Dumme daran ist, dass $XAUTHORITY keineswegs konstant ist,
sondern nach jedem Systemstart
vermutlich nicht nur nach einem Reboot, sondern bereits bei jedem
Start einer X‐Sitzung
Post by Alexander Goetzenstein
einen anderen Wert annimmt, etwa
XAUTHORITY=/run/user/1000/xauth_jhPLRg
Sicher geht das auch anders und besser, aber mit MetaGer habe ich
keine funktionierende Lösung gefunden. Meist war es in den
Erklärungen mit DISPLAY=:0 getan, oder etwa mit
XAUTHORITY=/home/<username>/.Xauthority
-funktioniert (hier™) nur leider nicht.
Wie macht man es richtig?
Gibt es eine Möglichkeit, eine Auto‐Start‐Liste von Programmen
einzurichten, die beim Start Deiner X‐Sitzung ausgeführt wird?  Dann
würde ich vorschlagen, dort das Kommando

cp --remove-destination -- "$XAUTHORITY" \
"$HOME"/.Xauthority.tmp &&
mv -f -- "$HOME"/.Xauthority.tmp "$HOME"/.Xauthority

einzutragen.  Das bewirkt, dass bei jedem Start einer X‐Sitzung eine
Kopie der aktuellen Autorisierungsdaten in der Datei
«"$HOME"/.Xauthority» verfügbar gemacht wird. 

Dann kannst Du im Crontab


XAUTHORITY="$HOME"/.Xauthority && export XAUTHORITY

schreiben. 
Alexander Goetzenstein
2021-02-22 10:01:12 UTC
Permalink
Hallo,
zwar muss ich zugeben, dass es nicht mehr so ganz zum Thema shell
gehört, aber es ist eine Folge, und da wir schon dabei sind...
Post by Alexander Goetzenstein
Ach ja: openSUSE Tumbleweed mit KDE.
nachdem ich es also sauber geschafft habe, aus cron mittels script
dolphin aufzurufen, "plagt" mich noch eine Kleinigkeit. Dolphin kommt
nämlich nicht mit den gewohnten Einstellungen hoch. Die viel zu kleine
Schrift habe ich rasch neu eingestellt, während lustigerweise meine
Lesezeichen am linken Rand alle schon da waren. Was mich aber im
Arbeitsfluss bremst, ist, dass Dateien in dieser Dolphin-Sitzung zum
Unterschied zu allen anderen nur per Doppelklick statt einfachem Klick
geöffnet werden. In Dolphin selbst habe ich dazu keine Einstellung
gefunden, aber vielleicht fehlt noch etwas anderes, das ich (back to
topic...) in dem aufrufenden Script mitgeben kann. Was könnte das sein?
--
Gruß
Alex
Sven Hartge
2021-02-22 10:20:22 UTC
Permalink
Post by Alexander Goetzenstein
Post by Alexander Goetzenstein
Ach ja: openSUSE Tumbleweed mit KDE.
nachdem ich es also sauber geschafft habe, aus cron mittels script
dolphin aufzurufen, "plagt" mich noch eine Kleinigkeit. Dolphin kommt
nämlich nicht mit den gewohnten Einstellungen hoch. Die viel zu kleine
Schrift habe ich rasch neu eingestellt, während lustigerweise meine
Lesezeichen am linken Rand alle schon da waren. Was mich aber im
Arbeitsfluss bremst, ist, dass Dateien in dieser Dolphin-Sitzung zum
Unterschied zu allen anderen nur per Doppelklick statt einfachem Klick
geöffnet werden. In Dolphin selbst habe ich dazu keine Einstellung
gefunden, aber vielleicht fehlt noch etwas anderes, das ich (back to
topic...) in dem aufrufenden Script mitgeben kann. Was könnte das sein?
Vermutlich die Verbindung zum System von KDE welches die
User/Desktop-Setting bereitstellt. Wahrscheinlich musst du noch ein paar
Variablen mehr exportieren, z.B. Dinge wie DBUS_SESSION_BUS_ADDRESS,
alles was mit XDG_ beginnt und bestimmt noch ein paar KDE-spezifische.


--
Sigmentation fault. Core dumped.
Alexander Goetzenstein
2021-02-22 10:56:23 UTC
Permalink
Hallo,
Post by Sven Hartge
Vermutlich die Verbindung zum System von KDE welches die
User/Desktop-Setting bereitstellt. Wahrscheinlich musst du noch ein paar
Variablen mehr exportieren, z.B. Dinge wie DBUS_SESSION_BUS_ADDRESS,
alles was mit XDG_ beginnt
Danke, funktioniert!
--
Gruß
Alex
Sieghard Schicktanz
2021-02-22 20:00:06 UTC
Permalink
Hallo Alexander,
Post by Alexander Goetzenstein
nachdem ich es also sauber geschafft habe, aus cron mittels script
Mit hängendem Würg-Around.
Post by Alexander Goetzenstein
dolphin aufzurufen, "plagt" mich noch eine Kleinigkeit. Dolphin kommt
nämlich nicht mit den gewohnten Einstellungen hoch. Die viel zu kleine
...
Post by Alexander Goetzenstein
gefunden, aber vielleicht fehlt noch etwas anderes, das ich (back to
topic...) in dem aufrufenden Script mitgeben kann. Was könnte das sein?
Klar - der läuft ja auch nicht unter _Deinem_ Account, sondern unter dem
des Aufrufers. Da Du den vom cron starten läßt (mit allen Problemquellen),
halt unter dem Account, unter dem cron läuft und mit dessen Einstellungen.
Nachdem cron wohl meistens unter "root" läuft, also mit den Einstellungen
von "root", falls der welche hat, sonst mit den "defaults".
(Und wenn Du mal nicht aufpasst und bei einer falschen (System-) Datei auf
"Löschen" klickst, (z.B. die crontab), ist die danach auch dann _weg_, wenn
Du als Benutzer dafür eigentlich nicht die Berechtigung hättest (gehabt
haben dürfen sollen...).)
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Alexander Goetzenstein
2021-02-23 08:07:09 UTC
Permalink
Hallo,
Post by Sieghard Schicktanz
Klar - der läuft ja auch nicht unter _Deinem_ Account, sondern unter dem
des Aufrufers.
was bei der crontab des users identisch ist, wenn ich es richtig
verstanden habe. Es ist halt nur (noch) nicht die komplette Umgebung
aufgebaut. Oder?
--
Gruß
Alex
Sieghard Schicktanz
2021-02-23 19:58:50 UTC
Permalink
Hallo Alexander,
Post by Alexander Goetzenstein
Post by Sieghard Schicktanz
Klar - der läuft ja auch nicht unter _Deinem_ Account, sondern unter dem
des Aufrufers.
was bei der crontab des users identisch ist, wenn ich es richtig
verstanden habe. Es ist halt nur (noch) nicht die komplette Umgebung
aufgebaut. Oder?
Das auch nicht (s. "man cron" und "man crontab") - nach Deiner Schilderung
war aber anzunehmen, daß der Aufruf vom "zentralen" cron unter "root"
stattfände. Wenn nicht, dann ist das zwar schonmal viel besser, aber dann
mußt Du tatsächlich dem cron (oder dem aufgerufenen Programm) erstmal
zeigen, wo die Konfiguration zu finden ist. Geht das wirklich nur auf diese
Art, was Du beabsichtigst? Reicht es nicht vielleicht, den Aufruf nur nach
dem Anmelden zu machen? Dafür haben die gängigen Fenster-Manager der
Desktöppe doch geeignete Start-Skripte, aus denen man das erledigen könnte
- und da sind alle relevanten Einstellungen vollständig verfügbar.
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Sieghard Schicktanz
2021-02-22 19:42:19 UTC
Permalink
Hallo Alexander,
Post by Alexander Goetzenstein
Hallo,
nach einigem Tüfteln habe ich es hinbekommen, aus der crontab des Users
ein Script zu starten, das seinerseits eine grafische Anwendung startet,
...
Post by Alexander Goetzenstein
Wie macht man es richtig?
_Richtig_ macht man sowas überhaupt nicht. Und zwar deswegen, weil das zu
- potentiell katastrophalen - Fehlern bei der Benutzung führen kann. Wenn
da auf einmal unerwarteterweise eine Anfrage zu irgendeiner kritischen
Aktion kommt, die eigentlich _nicht_ ausgeführt werden soll, der Benutzer
aber gerade entschlossen die Maustaste drückt und damit eine Bestätigung an
die Anfrage schickt, weil die an der dafür "richtigen" Stelle erschienen
ist, könnte das doch evtl. "ein wenig" unglücklich sein, nicht?

Ansonsten gibt es für u.a. den Zweck, einem anderen Benutzer Zugriff auf
das aktuelle Display zu geben, das Programm "xauth".
Um z.B. das Display für einen anderen Benutzer freizugeben, kann der Aufruf
"xauth -f ~/.Xauthority merge /home/$USER/.Xauthority" bentzt werden. Mit
"merge" wird die Freigabe zu dessen ".Xauthority" _hinzugefügt_, seine
sonstigen Berechtigungen werden damit nicht verändert. In der "anderen
Richtung" geht ein "xauth -f /home/$USER/.Xauthority merge -".
Natürlich muß in beiden Fällen der Zugriff auf die Dateien des jeweils
anderen Benutzers erlaubt sein.
Zumindest benutze ich das so erfolgreich, um z.B. den Browser unter einem
minderberechtigten Benutzer zu starten, oder an anderer Stelle, um beim
_Anmelden_ einen Hinweis auf ein anstehendes Backup anzuzeigen.
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Christian Garbs
2021-02-23 22:21:35 UTC
Permalink
Mahlzeit!
Post by Alexander Goetzenstein
nach einigem Tüfteln habe ich es hinbekommen, aus der crontab des Users
ein Script zu starten, das seinerseits eine grafische Anwendung startet,
hier ist es dolphin.
Mal einen Schritt zurück:
- Was willst Du denn genau tun?
- Und muss es unbedingt die Crontab sein?

Mir fällt spontan sowas ein wie "Es soll jeden Tag um 20:15h der
Dateimanager automatisch aufgehen", aber was, wenn ich da gerade am
Zocken bin? Dann ploppt der mir ins Bild :-)

Vielleicht reicht es ja schon, irgendwas im KDE-Autostart oder so
abzulegen, ggf. mit einem "sleep 1h" drin.

Also: Wozu denn das ganze?

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
I come from a small town whose population never changed. Each time a woman
got pregnant, someone left town.
-- Michael Prichard
Lesen Sie weiter auf narkive:
Loading...