[gelöst] yad Textbox via Script wird nicht angezeigt
[gelöst] yad Textbox via Script wird nicht angezeigt
Hallo zusammen,
ich habe folgendes Problem, dass ich die YAD Textbox nicht angezeigt bekomme wenn diese über ein Script (Service beim Computer Start) ausgeführt wird.
Wenn ich das selbe Script über das Terminal (sudo /bin/bash script.sh) starte wird mir die Textbox angezeigt.
Ich lasse mir als Überprüfung auch eine text Datei anlegen und lösche diese nach meinem Script wieder. Das funktioniert auch alles.
Über den Service wird mir jedoch nicht die Textbox angezeigt.
Hat jemand eine Idee woran das liegen könnte?
Das Script wird mit root Rechten mit einem anderen User als der angemeldete ausgeführt. Jedoch wenn ich das Script über das Terminal (su admin) ausführe funktioniert das ja. Somit dürfte das nicht an dem anderen User liegen. Ich bin etwas ratlos.
ich habe folgendes Problem, dass ich die YAD Textbox nicht angezeigt bekomme wenn diese über ein Script (Service beim Computer Start) ausgeführt wird.
Wenn ich das selbe Script über das Terminal (sudo /bin/bash script.sh) starte wird mir die Textbox angezeigt.
Ich lasse mir als Überprüfung auch eine text Datei anlegen und lösche diese nach meinem Script wieder. Das funktioniert auch alles.
Über den Service wird mir jedoch nicht die Textbox angezeigt.
Hat jemand eine Idee woran das liegen könnte?
Das Script wird mit root Rechten mit einem anderen User als der angemeldete ausgeführt. Jedoch wenn ich das Script über das Terminal (su admin) ausführe funktioniert das ja. Somit dürfte das nicht an dem anderen User liegen. Ich bin etwas ratlos.
Zuletzt geändert von joe2017 am 14.07.2023 08:27:11, insgesamt 1-mal geändert.
Re: yad Textbox via Script wird nicht angezeigt
Code: Alles auswählen
export DISPLAY=:0
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: yad Textbox via Script wird nicht angezeigt
Stimmt, da war ja was...
Aber irgendwie funktioniert es damit auch nicht.
Aber irgendwie funktioniert es damit auch nicht.
Re: yad Textbox via Script wird nicht angezeigt
Beim Start ist noch kein graphisch Benutzer eingelogt, also kann auch kein Fenster angezeigt werden.joe2017 hat geschrieben:13.07.2023 12:35:07ich habe folgendes Problem, dass ich die YAD Textbox nicht angezeigt bekomme wenn diese über ein Script (Service beim Computer Start) ausgeführt wird.
Sollte wider erwarten doch schon jemand eingelogt sein, woher soll das Skript den Usernamen kennen? Ohne den Usernamen kann das Home-Verzeichnis und die dort liegende Datei ~/.Xauthority nicht ermittelt werden. Ohne .Xauthority darf nichts und niemand auf das Display malen. Und wenn zwei User eingeloigt sind, wem malst du dann das Fenster auf das Display?
Selbst, wenn der Benutzer eingelogt ist und du einen Weg gedunden hast, um den Usernamen zu ermitteln, ist die Dispalynummer unbekannt. Mit:
Code: Alles auswählen
export DISPLAY=:0
Wie schon im anderen Thread setzt du hier zu viele Dinge voraus, die nicht garantiert werden können. Skripte, die von cron oder systemd laufen, dürfen keine Graphik voraussetzen und müssen ohne Meldungsfenster auskommen.
Wenn du jemandem mitteilen willst, ob irgendwas noch am Laufen ist, muß das vom Benutzer initiiert werden und nicht von cron/systemd.
Dein cron/systemd-Skript könnte beispielsweise eine Logdatei schreiben. Der Benutzer, der sich einlogt, kann dann über den Autostartmechanismus der graphischen Umgebung ein Skript starten, das die Logdatei auswertet und daraus Zustand und Erfolg, Nichterfolg ableitet.
Re: yad Textbox via Script wird nicht angezeigt
Ich habe nur einen Benutzer der immer angemeldet ist.
Daher ist der username und die DISPLAY Nummer (:0) immer gleich.
Somit müsste ich das doch ausgeben können.
Die Fehlermeldung im Log ist folgende:
in meinem Script habe ich folgendes eingefügt...
Daher ist der username und die DISPLAY Nummer (:0) immer gleich.
Somit müsste ich das doch ausgeben können.
Die Fehlermeldung im Log ist folgende:
Code: Alles auswählen
yad[2437]: cannot open display: :0
Code: Alles auswählen
export DISPLAY=:0
yad --text "test" usw
Re: yad Textbox via Script wird nicht angezeigt
Schau dir dazu auch mal dieses hier an:
viewtopic.php?p=1189357#p1189357
Funktioniert noch so und bis hin zu sid...
viewtopic.php?p=1189357#p1189357
Funktioniert noch so und bis hin zu sid...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: yad Textbox via Script wird nicht angezeigt
Hier noch mal das gesamte Vorgehen, damit man besser sieht was ich mache.
Meinen Service habe ich wie folgt angelegt.
sudo nano /etc/systemd/system/test.service
In meinem Script habe ich alle möglichen Dinge die ich ausführe. Es funktioniert alles bis auf die YAD Ausgabe.
sudo nano /path/to/script.sh
Fehlermeldung:
Eigentlich muss doch nur systemd Zugriff auf DISPLAY=:0 erhalten oder?
Wie genau stell ich das an?
Meinen Service habe ich wie folgt angelegt.
sudo nano /etc/systemd/system/test.service
Code: Alles auswählen
[Unit]
Description=Test Service
[Service]
ExecStart=/path/to/script.sh
[Install]
WantedBy=multi-user.target
sudo nano /path/to/script.sh
Code: Alles auswählen
export DISPLAY=:0
yad --text "test" usw
Code: Alles auswählen
yad[2437]: cannot open display: :0
Wie genau stell ich das an?
Re: yad Textbox via Script wird nicht angezeigt
Ich habe die Lösung.
Ich muss in meinen Service noch folgendes mit aufnehmen.
oder einfach im Script die beiden exports machen
Ich muss in meinen Service noch folgendes mit aufnehmen.
Code: Alles auswählen
[Unit]
Description=Test Service
[Service]
ExecStart=/path/to/script.sh
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/path/to/xauthority"
[Install]
WantedBy=multi-user.target
Code: Alles auswählen
export DISPLAY=:0
export XAUTHORITY=/path/to/xauthority