-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.py
More file actions
100 lines (86 loc) · 2.82 KB
/
Copy pathsettings.py
File metadata and controls
100 lines (86 loc) · 2.82 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import json
import os
import config
SETTINGS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "settings.json")
def get_master_apps():
apps = {}
for name in config.SUSPEND_SAFE_DEFAULT:
apps[name] = "suspend"
for name in config.THROTTLE_SAFE_DEFAULT:
apps[name] = "throttle"
for name in config.SUSPEND_OPT_IN:
apps.setdefault(name, "normal")
for name in config.THROTTLE_OPT_IN:
apps.setdefault(name, "normal")
return apps
def _default_system_settings():
return {
"x_button_action": "minimize",
"notify_on_action": True,
"auto_resume_on_sleep": True,
"auto_clean_on_startup": True,
}
def _default_settings():
return {
"app_state": get_master_apps(),
"custom_apps": {},
"system": _default_system_settings(),
}
def load_settings():
if not os.path.exists(SETTINGS_PATH):
data = _default_settings()
save_settings(data)
return data
try:
with open(SETTINGS_PATH, "r") as f:
data = json.load(f)
master = get_master_apps()
data.setdefault("app_state", {})
for name, default_state in master.items():
data["app_state"].setdefault(name, default_state)
data.setdefault("custom_apps", {})
data.setdefault("system", {})
for k, v in _default_system_settings().items():
data["system"].setdefault(k, v)
return data
except Exception:
data = _default_settings()
save_settings(data)
return data
def save_settings(data):
with open(SETTINGS_PATH, "w") as f:
json.dump(data, f, indent=2)
def set_app_state(name, state):
data = load_settings()
data["app_state"][name] = state
save_settings(data)
def add_custom(name, mode):
data = load_settings()
data["custom_apps"][name] = mode
save_settings(data)
def remove_custom(name):
data = load_settings()
data["custom_apps"].pop(name, None)
save_settings(data)
def get_active_suspend_names():
data = load_settings()
names = [n for n, s in data["app_state"].items() if s == "suspend"]
if config.IS_PRO:
names += [n for n, m in data["custom_apps"].items() if m == "suspend"]
return names
def get_active_throttle_names():
data = load_settings()
names = [n for n, s in data["app_state"].items() if s == "throttle"]
if config.IS_PRO:
names += [n for n, m in data["custom_apps"].items() if m == "throttle"]
return names
def get_system_setting(key):
data = load_settings()
return data["system"].get(key, _default_system_settings().get(key))
def set_system_setting(key, value):
data = load_settings()
data.setdefault("system", {})
data["system"][key] = value
save_settings(data)
def reset_to_defaults():
save_settings(_default_settings())