diff --git a/Xsession b/Xsession index c82da4d..f6d3e4a 100755 --- a/Xsession +++ b/Xsession @@ -26,7 +26,7 @@ export GPG_AGENT_INFO /usr/bin/parcellite & /usr/bin/dropboxd & /usr/bin/xscreensaver -no-splash & -~/.config/awesome/bin/gajim-watch-xscreensaver & +~/.config/awesome/bin/mcabber-watch-xscreensaver & # Starts polkit server /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & diff --git a/bin/mcabber-watch-xscreensaver b/bin/mcabber-watch-xscreensaver new file mode 100755 index 0000000..be769f0 --- /dev/null +++ b/bin/mcabber-watch-xscreensaver @@ -0,0 +1,84 @@ +#!/usr/bin/env python + +############################################################################### +# +# IMPORTS +# +############################################################################### + +import subprocess +import re +import os + + +############################################################################### +# +# PARAMETERS AND CONSTANTS +# +############################################################################### + +FIFO = "%s/.mcabber/mcabber.fifo" % os.environ["HOME"] + + +############################################################################### +# +# CLASSES +# +############################################################################### + +class GajimProxy(object): + """ + Empathy account manager proxy class + """ + + def fifo_write(self, command): + """ + Sets status away + + Saves current status to be restored by back method. + """ + if not os.path.isfile(FIFO): + return + f = open(FIFO, "w") + f.write("/%s\n" % command) + f.close() + + def online(self): + """ + Sets status online + """ + self.fifo_write("back") + + def away(self): + """ + Sets status away + """ + self.fifo_write("away") + + +############################################################################### +# +# MAIN +# +############################################################################### + +if __name__ == '__main__': + proxy = GajimProxy() + + watcher = subprocess.Popen( + ['xscreensaver-command', '-watch'], + stdout=subprocess.PIPE) + + try: + while True: + row = watcher.stdout.readline() + + if re.match('^(BLANK|LOCK)', row): + proxy.away() + elif re.match('^UNBLANK', row): + proxy.online() + + watcher.stdout.flush() + + except KeyboardInterrupt: + pass