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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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()
|