From 18109193b239be6e7ecc4c2d07c9c999e33081f8 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 12 Sep 2012 21:29:49 +0000 Subject: checks for systray in unity --- src/leap/baseapp/unitychecks.py | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/leap/baseapp/unitychecks.py (limited to 'src/leap/baseapp/unitychecks.py') diff --git a/src/leap/baseapp/unitychecks.py b/src/leap/baseapp/unitychecks.py new file mode 100644 index 00000000..aa644c5f --- /dev/null +++ b/src/leap/baseapp/unitychecks.py @@ -0,0 +1,79 @@ +#!/usr/bin/python2 +# vim: tabstop=8 expandtab shiftwidth=5 softtabstop=4 +""" +modified from code from the starcal2 project +copyright Saeed Rasooli +License: GPL +""" +import logging +import platform +import sys +from subprocess import Popen, PIPE + +logging.basicConfig() +logger = logging.getLogger(__name__) +logger.setLevel('DEBUG') + +from leap.base.constants import APP_NAME +from leap.baseapp.dialogs import ErrorDialog + +get_whitelist = lambda: eval(Popen(['gsettings', 'get', 'com.canonical.Unity.Panel', 'systray-whitelist'], stdout=PIPE).communicate()[0]) + +set_whitelist = lambda ls: Popen(['gsettings', 'set', 'com.canonical.Unity.Panel', 'systray-whitelist', repr(ls)]) + +def add_to_whitelist(): + ls = get_whitelist() + if not APP_NAME in ls: + ls.append(APP_NAME) + set_whitelist(ls) + +def remove_from_whitelist(): + ls = get_whitelist() + if APP_NAME in ls: + ls.remove(APP_NAME) + set_whitelist(ls) + +def is_unity_running(): + (output, error) = Popen('ps aux | grep [u]nity-panel-service', stdout=PIPE, shell=True).communicate() + output = bool(str(output)) + if not output: + (output, error) = Popen('ps aux | grep [u]nity-2d-panel', stdout=PIPE, shell=True).communicate() + output = bool(str(output)) + return output + +def need_to_add(): + if is_unity_running(): + wlist = get_whitelist() + if not (APP_NAME in wlist or 'all' in wlist): + logger.debug('need to add') + return True + return False + +def add_and_restart(): + add_to_whitelist() + Popen('LANG=en_US.UTF-8 unity', shell=True) + +MSG = "Seems that you are using a Unity desktop and Leap is not allowed to use Tray icon. Press OK to add Leap to Unity's white list and then restart Unity" + +def do_check(): + if platform.system() == "Linux" and need_to_add(): + dialog = ErrorDialog() + dialog.confirmMessage( + MSG, + "add to systray?", + add_and_restart) + +if __name__=='__main__': + if len(sys.argv)>1: + cmd = sys.argv[1] + if cmd=='add': + add_to_whitelist() + elif cmd=='rm': + remove_from_whitelist() + elif cmd=='print': + print get_whitelist() + elif cmd=="check": + from PyQt4.QtGui import QApplication + app = QApplication(sys.argv) + do_check() + -- cgit v1.2.3 From ddd11604a5ae376ba27f70c9eb9a6971e749b1f9 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 12 Sep 2012 08:49:13 +0900 Subject: pep8 --- src/leap/baseapp/unitychecks.py | 45 +++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'src/leap/baseapp/unitychecks.py') diff --git a/src/leap/baseapp/unitychecks.py b/src/leap/baseapp/unitychecks.py index aa644c5f..72c9ee6f 100644 --- a/src/leap/baseapp/unitychecks.py +++ b/src/leap/baseapp/unitychecks.py @@ -17,9 +17,14 @@ logger.setLevel('DEBUG') from leap.base.constants import APP_NAME from leap.baseapp.dialogs import ErrorDialog -get_whitelist = lambda: eval(Popen(['gsettings', 'get', 'com.canonical.Unity.Panel', 'systray-whitelist'], stdout=PIPE).communicate()[0]) +get_whitelist = lambda: eval( + Popen(['gsettings', 'get', 'com.canonical.Unity.Panel', + 'systray-whitelist'], stdout=PIPE).communicate()[0]) + +set_whitelist = lambda ls: Popen( + ['gsettings', 'set', + 'com.canonical.Unity.Panel', 'systray-whitelist', repr(ls)]) -set_whitelist = lambda ls: Popen(['gsettings', 'set', 'com.canonical.Unity.Panel', 'systray-whitelist', repr(ls)]) def add_to_whitelist(): ls = get_whitelist() @@ -27,21 +32,29 @@ def add_to_whitelist(): ls.append(APP_NAME) set_whitelist(ls) + def remove_from_whitelist(): ls = get_whitelist() if APP_NAME in ls: ls.remove(APP_NAME) set_whitelist(ls) + def is_unity_running(): - (output, error) = Popen('ps aux | grep [u]nity-panel-service', stdout=PIPE, shell=True).communicate() + #XXX use psutil instead + (output, error) = Popen( + 'ps aux | grep [u]nity-panel-service', + stdout=PIPE, shell=True).communicate() output = bool(str(output)) if not output: - (output, error) = Popen('ps aux | grep [u]nity-2d-panel', stdout=PIPE, shell=True).communicate() + (output, error) = Popen( + 'ps aux | grep [u]nity-2d-panel', + stdout=PIPE, shell=True).communicate() output = bool(str(output)) return output -def need_to_add(): + +def need_to_add(): if is_unity_running(): wlist = get_whitelist() if not (APP_NAME in wlist or 'all' in wlist): @@ -49,11 +62,17 @@ def need_to_add(): return True return False + def add_and_restart(): add_to_whitelist() Popen('LANG=en_US.UTF-8 unity', shell=True) -MSG = "Seems that you are using a Unity desktop and Leap is not allowed to use Tray icon. Press OK to add Leap to Unity's white list and then restart Unity" + +MSG = ("Seems that you are using a Unity desktop " + "and %s is not allowed to use Tray icon. " + "Press OK to add %s to Unity's white list " + "and then restart Unity" % (APP_NAME, APP_NAME)) + def do_check(): if platform.system() == "Linux" and need_to_add(): @@ -63,17 +82,17 @@ def do_check(): "add to systray?", add_and_restart) -if __name__=='__main__': - if len(sys.argv)>1: + +if __name__ == '__main__': + if len(sys.argv) > 1: cmd = sys.argv[1] - if cmd=='add': + if cmd == 'add': add_to_whitelist() - elif cmd=='rm': + elif cmd == 'rm': remove_from_whitelist() - elif cmd=='print': + elif cmd == 'print': print get_whitelist() - elif cmd=="check": + elif cmd == "check": from PyQt4.QtGui import QApplication app = QApplication(sys.argv) do_check() - -- cgit v1.2.3