IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[linux] Détecter fin session graphique


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut [linux] Détecter fin session graphique
    Bonjour,

    Je programme un petit applet en pygtk qui est actif durant toute la durée de ma session Gnome (je suis sous Linux).

    J'aimerais savoir s'il est possible de détecter la fin de la session, pour que mon applet puisse se ferme "proprement" en lançant une fonction appropriée lors de la fermeture.
    (Je pense que ça revient plus ou moins à détecter un signal TERM)

    Merci d'avance



    Ma config : python 2.5, pygtk 2.10, gnome 2.20

  2. #2
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut je sais pas si ca va t'aider
    mais j'ai trouvé ca sur le site officiel de python. Il ya un exemple.
    http://docs.python.org/lib/module-signal.html#l2h-2595

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Parfait, c'est ce que je cherchais !

    J'en ai par contre un peu bavé pour trouvé le signal envoyé par la session : en fait, il n'envoie pas de SIGTERM comme je le pensais, mais un SIGHUP...

    Bref, voilà un bout de code pour illustrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
     
    ### http://fr.wikibooks.org/wiki/Le_syst%C3%A8me_d%27exploitation_GNU-Linux/Processus
     
    #------------------------------------------------------------------------------
     
    import signal
    import gobject
    import pygtk
    pygtk.require('2.0')
    import gtk
     
    #------------------------------------------------------------------------------
     
    def gestion_signal(s, f):
        print "Detection signal " + str(s)
        gtk.main_quit()
        return
     
    #------------------------------------------------------------------------------
     
    class ClassTest:
        """Classe principale du programme."""
     
        def __init__(self):
            # Icone de statut
            self.status = gtk.StatusIcon()
            self.status.set_from_stock('gtk-info')
            self.status.set_tooltip("Test")
            self.status.connect('activate', self.ev_clic_icon)
            self.status.set_visible(True)
            # Gestion des signaux
            signal.signal(signal.SIGINT,  gestion_signal)
            signal.signal(signal.SIGTERM, gestion_signal)
            signal.signal(signal.SIGHUP,  gestion_signal)
     
        def ev_clic_icon(self, data=None):
            """Gestion du clic sur l'icone de statut."""
            gtk.main_quit()
            return
     
        def main(self):
            """Boucle principale."""
            gtk.main()
            return 0
     
    #------------------------------------------------------------------------------
     
    if __name__ == "__main__":
        print "START"
        ClassTest().main()
        print "STOP"
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] détecter fin de session PHP en Javascript
    Par jason69 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 11h44
  2. Réponses: 1
    Dernier message: 13/06/2006, 15h11
  3. [Linux-Windows] Quelle carte graphique 3D pour port PCI ?
    Par calogerogigante dans le forum Composants
    Réponses: 6
    Dernier message: 01/02/2006, 18h19
  4. [FreePascal] Linux et le mode graphique
    Par ILIAS Raphaël dans le forum Free Pascal
    Réponses: 3
    Dernier message: 03/07/2005, 17h27
  5. Contrôler linux depuis XP (mode graphique)
    Par Bweb dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 27/02/2005, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo