[gelöst] yad Textbox via Script wird nicht angezeigt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst] yad Textbox via Script wird nicht angezeigt

Beitrag von joe2017 » 13.07.2023 12:35:07

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.
Zuletzt geändert von joe2017 am 14.07.2023 08:27:11, insgesamt 1-mal geändert.

Benutzeravatar
TRex
Moderator
Beiträge: 8086
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von TRex » 13.07.2023 12:42:05

Code: Alles auswählen

export DISPLAY=:0
(und ggf. die Hintergründe dazu) sind dir bekannt?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von joe2017 » 13.07.2023 14:16:51

Stimmt, da war ja was...

Aber irgendwie funktioniert es damit auch nicht.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von MSfree » 13.07.2023 14:40:59

joe2017 hat geschrieben: ↑ zum Beitrag ↑
13.07.2023 12:35:07
ich habe folgendes Problem, dass ich die YAD Textbox nicht angezeigt bekomme wenn diese über ein Script (Service beim Computer Start) ausgeführt wird.
Beim Start ist noch kein graphisch Benutzer eingelogt, also kann auch kein Fenster angezeigt werden.

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
wirst du bei mir kein Glück aben, bei mir hat das Display im Moment die Nummer :1.

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.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von joe2017 » 13.07.2023 14:46:48

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:

Code: Alles auswählen

yad[2437]: cannot open display: :0
in meinem Script habe ich folgendes eingefügt...

Code: Alles auswählen

export DISPLAY=:0
yad --text "test" usw

Benutzeravatar
detix
Beiträge: 1705
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von detix » 13.07.2023 17:11:48

Schau dir dazu auch mal dieses hier an:
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!

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von joe2017 » 14.07.2023 08:10:20

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

Code: Alles auswählen

[Unit]
Description=Test Service

[Service]
ExecStart=/path/to/script.sh

[Install]
WantedBy=multi-user.target
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

Code: Alles auswählen

export DISPLAY=:0
yad --text "test" usw
Fehlermeldung:

Code: Alles auswählen

yad[2437]: cannot open display: :0
Eigentlich muss doch nur systemd Zugriff auf DISPLAY=:0 erhalten oder?
Wie genau stell ich das an?

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: yad Textbox via Script wird nicht angezeigt

Beitrag von joe2017 » 14.07.2023 08:22:46

Ich habe die Lösung.

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
oder einfach im Script die beiden exports machen

Code: Alles auswählen

export DISPLAY=:0
export XAUTHORITY=/path/to/xauthority

Antworten