Anwendung beim Ende einer GNOME-Session korrekt beenden

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Jochen Skulj
User
Beiträge: 9
Registriert: Samstag 5. März 2005, 18:57
Kontaktdaten:

Hallo,

ich bin nicht ganz sicher, ob ich in diesem Unterforum richtig bin. Da meine Frage aber zu mindestens einen Bezug zu GNOME habe, versuche ich es mal ...

Ich programmiere gerade ein kleines Werkzeug, das im Hintergrund Dateien synchronisieren soll. Eigentlich ist das Programm keine GTK-Anwendung, weil für diese Aufgabe keine GUI notwendig ist. Bislang bin ich so weit, dass ich das Programm über Befehlszeilenparameter starten und stoppen kann. Das Programm protokolliert seine Aktivitäten, wobei aber nicht bei jeder Aktivität das Logfile geschrieben wird, sondern immer ein paar Einträge im Speicher gehalten werden.

Es ist daher notwendig, dass das Programm korrekt gestoppt wird und nicht einfach der Prozess gekillt wird. Dies gilt natürlich auch, wenn der Benutzer sich abmeldet bzw. die Session beendet.

Meine Frage: wie kann bzw. sollte ich in einer Anwendung auf das Beenden der Benutzersitzung reagieren? Gibt es im Session Management von GNOME eine Möglichkeit, sich dafür zu registrieren, sodass dann eine Callback-Funktion aufgerufen wird?

(Einen Handler für SIGTERM/SIGINT habe ich schon ausprobiert, aber ich bin nicht sicher, ob das hier der richtige Ansatz ist.)

Ich bin für jeden Hinweis dankbar.

Besten Gruß, Jochen
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde da einfach auf SIGTERM (nicht SIGKILL, weil das geht natürlich nicht) reagieren mit einem ``atexit``-Handler. Wieso du das jetzt an GNOME koppeln magst ist mir nicht so klar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Jochen Skulj
User
Beiträge: 9
Registriert: Samstag 5. März 2005, 18:57
Kontaktdaten:

Hallo,

ok, vielleicht war meine Frage zu unklar formuliert. Mein Problem ist folgendes:

Ich habe ein Programm, dass der Anwender üblicherweise im Hintergrund starten wird. Der Benutzer kann das Programm zwar beenden, muss er aber nicht. Wenn der Benutzer das Programm nicht beendet, wird das Programm (meiner Beobachtung nach) erst beim Shutdown beendet und das ist eigentlich zu spät. Es wäre schöner, wenn das Programm sich schon beim/bevor dem Abmelden beendet.

Bei gedit ist es ja z.B. so, dass beim Abmelden eine Nachfrage erscheint, wenn gedit noch ungespeicherte Änderungen enthalten sind. Mich würde interessieren, wie ich in Python auf einen solchen "Logout"-Event reagieren kann. Das muss nicht auf GNOME beschränkt sein, aber sollte unter GNOME funktionieren.

Möglichetweise ist meine Frage zu unklar, weil mir ein paar elementare Grundlagen fehlen.

Meine Frage betrifft übrigens: https://github.com/joskulj/cryptbox/blo ... ryptbox.py

Bin für jeden Hinweis dankbar.

Viele Grüße, Jochen
BlackJack

Was Du suchst ist das X-Session-Management. Für Gnome gibt es da beispielsweise das Client-Objekt: Gtk+/Gnome Application Development — Session Management (erster Suchtreffer bei „x session management gtk”).
Jochen Skulj
User
Beiträge: 9
Registriert: Samstag 5. März 2005, 18:57
Kontaktdaten:

Ja, danke. Das ist genau, was ich suche.

Jochen
Antworten