Hallo,
gibt es eigentlich eine (elegante) Methode, um ein Programm beim Logout aus der Xsession auszuführen? Es geht darum, dass ich beim Logout bestimmter (dauerhaft eingestecker) Peripherie zu sagen, dass der User, der sie beim Login konfiguriert hat, nicht mehr da ist.
Beim Screenlock wustel ich über dbus herum. Da habe ich zufällig Hooks gefunden, die der Screensaver triggert. Ich könnte mir vorstellen, dass man via dbus ein passendes Event gibt, aber ich weiß nicht, wie man nach passenden Events sucht. (btw, ich nutze Debian/Mate)
Mit freundlichem Gruß / With kind regards Holger Klawitter -- listen <at> klawitter <dot> de
On Wed, Jan 15, 2025 at 08:41:47AM +0100, Holger Klawitter wrote:
Hallo,
gibt es eigentlich eine (elegante) Methode, um ein Programm beim Logout aus der Xsession auszuführen? Es geht darum, dass ich beim Logout bestimmter (dauerhaft eingestecker) Peripherie zu sagen, dass der User, der sie beim Login konfiguriert hat, nicht mehr da ist.
[...]
Eine mögliche lustige Option, die ich aber noch nicht ausprobiert habe, ist es, in der .xsession ein
trap "echo foo" 0
zu setzen: die xsession ist ja ein Shell-Skript und theoretisch... (Statt echo foo natürlich die Aktion, die Du bei Finalisierung gemacht haben willst).
Am WE probiere ich das mal >:-)
lg
Hallo!
Eine trap funktioniert nicht, weil in einer xsession am Ende ein exec auf den compositor/windowmanager/whatever stattfindet.
Ich habe das Problem aber lösen können, da ich "meinen" Dienst direkt auf SIGHUP reagieren lassen konnte. Da hätte ich natürlich auch gleich drauf kommen können ;-)
tomas@tuxteam.de wrote (at 2025-01-15 09:57 +0100):
On Wed, Jan 15, 2025 at 08:41:47AM +0100, Holger Klawitter wrote:
Hallo,
gibt es eigentlich eine (elegante) Methode, um ein Programm beim Logout aus der Xsession auszuführen? Es geht darum, dass ich beim Logout bestimmter (dauerhaft eingestecker) Peripherie zu sagen, dass der User, der sie beim Login konfiguriert hat, nicht mehr da ist.
[...]
Eine mögliche lustige Option, die ich aber noch nicht ausprobiert habe, ist es, in der .xsession ein
trap "echo foo" 0
zu setzen: die xsession ist ja ein Shell-Skript und theoretisch... (Statt echo foo natürlich die Aktion, die Du bei Finalisierung gemacht haben willst).
Am WE probiere ich das mal >:-)
lg
t
-- Mit freundlichem Gruß / With kind regards Holger Klawitter -- listen <at> klawitter <dot> de
On Mon, Jan 27, 2025 at 08:26:52AM +0100, Holger Klawitter wrote:
Hallo!
Eine trap funktioniert nicht, weil in einer xsession am Ende ein exec auf den compositor/windowmanager/whatever stattfindet.
Hm... schon. Aber genau darauf spekulierte ich ja, wenn die Session-Schnipsel Unterprozesse wären, dann würde das Trap ja nur dort gelten. Da sie aber im session-Kontext ausgeführt werden, müsste das signal handler setting weitergegeben werden.
Andererseits kann natürlich der WM/whatever die signal handlers hinterhältig zurücksetzen, was andererseits auch nachvollziehbar wäre.
Ich habe das Problem aber lösen können, da ich "meinen" Dienst direkt auf SIGHUP reagieren lassen konnte. Da hätte ich natürlich auch gleich drauf kommen können ;-)
OK :-)
Am WE probiere ich das mal >:-)
Vergessen. Aber es gibt ja noch ein Wochenende :-)
lg
tomas@tuxteam.de wrote (at 2025-01-27 08:44 +0100):
On Mon, Jan 27, 2025 at 08:26:52AM +0100, Holger Klawitter wrote:
Eine trap funktioniert nicht, weil in einer xsession am Ende ein exec auf den compositor/windowmanager/whatever stattfindet.
Hm... schon. Aber genau darauf spekulierte ich ja, wenn die Session-Schnipsel Unterprozesse wären, dann würde das Trap ja nur dort gelten. Da sie aber im session-Kontext ausgeführt werden, müsste das signal handler setting weitergegeben werden.
Da bei einem exec-call der prozess überschrieben wird, kann eine trap funktion wohl nicht erhalten bleiben.
Mit freundlichem Gruß / With kind regards Holger Klawitter -- listen <at> klawitter <dot> de
On Mon, Jan 27, 2025 at 09:38:11AM +0100, Holger Klawitter wrote:
[...]
Da bei einem exec-call der prozess überschrieben wird, kann eine trap funktion wohl nicht erhalten bleiben.
In der Tat. Ist auch in der execve() man page drin. Ist auch die einzige sinnvolle Option, wie Du andeutest: wenn der Prozess- Adressraum komplett ausgetauscht wird, zeigen die signal handler pointer in die Botanik.
Könnte lustig werden :-D
Danke+lg