source: lliurex-up/trunk/fuentes/lliurex-up-indicator/usr/bin/lliurex-up-indicator-endsession @ 5624

Last change on this file since 5624 was 5624, checked in by jrpelegrina, 3 years ago

WIP in indicator. Add endession scritp

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1#!/usr/bin/python
2
3import os
4import syslog
5import dbus
6from dbus.mainloop.glib import DBusGMainLoop
7
8import gi
9gi.require_version('Gtk', '3.0')
10from gi.repository import Gtk,GObject,Gio
11
12import signal
13signal.signal(signal.SIGINT, signal.SIG_DFL)
14
15
16LOCK_PATH="~/.config/lliurex-up-indicator"
17LOCK_TOKEN=os.path.join(LOCK_PATH,'llxUP_Indicator.lock')
18
19
20
21class Service:
22       
23       
24        def __init__(self):
25
26                syslog.syslog("iniciando")
27                DBusGMainLoop(set_as_default=True)
28                self.session_bus = dbus.SessionBus()
29               
30                # ###########################
31                #CAPTURE END SESSION SIGNAL
32                # ###########################
33                proxy = self.session_bus.get_object('org.gnome.SessionManager','/org/gnome/SessionManager')
34                proxy=dbus.Interface(proxy,"org.gnome.SessionManager")
35
36                d_id=os.getenv("DESKTOP_AUTOSTART_ID")
37                if d_id==None:
38                        d_id="lliurex-up-indicator"
39
40                print d_id
41                self.client_id=proxy.RegisterClient("lliurex-up-indicator",d_id)
42                print self.client_id
43
44                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
45                print proxy
46                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
47                print proxy
48                proxy.connect_to_signal("EndSession",self.on_end_session)
49               
50                proxy.connect_to_signal("QueryEndSession",self.on_query_end_session)
51
52
53        def on_query_end_session(self,sender):
54               
55               
56                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
57                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
58                proxy.EndSessionResponse(True,"saving session.")
59
60        def on_end_session(self,sender):
61               
62                self.delete_lock()
63                proxy = self.session_bus.get_object('org.gnome.SessionManager',self.client_id)
64                proxy=dbus.Interface(proxy,"org.gnome.SessionManager.ClientPrivate")
65                proxy.EndSessionResponse(True,"unregistering")
66                Gtk.main_quit()
67
68                       
69        def delete_lock(self):
70
71                file=os.path.expanduser(LOCK_TOKEN)
72                               
73                if os.path.exists(file):
74                        os.remove(file)
75
76                #return
77
78if __name__=="__main__":
79       
80        ms = Service()
81        Gtk.main()
82                       
Note: See TracBrowser for help on using the repository browser.