-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworkspaces.py
102 lines (95 loc) · 3.96 KB
/
workspaces.py
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
101
102
import subprocess
import json
import os.path
import argparse
iconsNumeral = ["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪ ", "⑫","⑬", "⑭","⑮ ","⑯", "⑰ ","⑱", "⑲" ,"⑳" ]
icons=""
usrdir=os.path.expanduser( '~' )
#Monitors and script arguments
parser = argparse.ArgumentParser()
parser.add_argument('--m', type=str, default='0', help="monitors are numbers try running the script with 0 to get monitors u ")
args = parser.parse_args()
display=args.m
# Hyprctl
hyprctldata = subprocess.check_output(["hyprctl", "-j", "clients"])
clients= json.loads(hyprctldata)
clients = [item for item in clients if item["monitor"] >= 0]
clients.sort(key=lambda x: x["workspace"]["id"])
monitors = subprocess.check_output(["hyprctl", "-j", "monitors"])
monitor = json.loads(monitors)
activeWorspaceID = monitor[int(display)]["activeWorkspace"]["id"]
#loading config files
with open(usrdir + '/.config/waybar/scripts/looks.json', 'r') as f:
looksconfig = json.load(f)[0]
prefixStart = looksconfig["prefixStart"]
prefixEnd = looksconfig["prefixEnd"]
prefixActiveStart = looksconfig["prefixActiveStart"]
prefixActiveEnd = looksconfig["prefixActiveEnd"]
number_workspaces = looksconfig["number_workspaces"]
icon_numerals= looksconfig["icon_numerals"]
empty_icon=looksconfig["emptyicon"]
with open(usrdir+'/.config/waybar/scripts/linkedIcons.json', 'r') as f:
linkedIcons = json.load(f)
lastid=0
once =True
for item in clients:
name = item["class"]
if name=="":
continue
id = item["workspace"].get("id")
currentmonitor = item["monitor"]
if currentmonitor == int(display):
notDone = True
for icon in linkedIcons:
if icon['appName'] in name:
if activeWorspaceID != id:
if number_workspaces:
icon_str = icon['icon']
if looksconfig:
icon_str = f"{id}{prefixStart}{icon_str}{prefixEnd}"
else:
icon_str = f"{prefixStart}{icon_str}{prefixEnd}"
icons += icon_str
notDone = False
else:
icons += icon['icon']
notDone = False
else:
if number_workspaces:
icon_str = icon['icon']
if looksconfig:
icon_str = f"{id}{prefixActiveStart}{icon_str}{prefixActiveEnd}"
else:
icon_str = f"{prefixActiveStart}{icon_str}{prefixActiveEnd}"
icons += icon_str
notDone = False
else:
icons += icon['icon']
notDone = False
if notDone and icon_numerals:
icon_str = iconsNumeral[id - 1]
if activeWorspaceID != id:
if looksconfig:
icon_str = f"{id}{prefixStart}{icon_str}{prefixEnd}"
else:
icon_str = f"{prefixStart}{icon_str}{prefixEnd}"
else:
if looksconfig:
icon_str = f"{id}{prefixActiveStart}{icon_str}{prefixActiveEnd}"
else:
icon_str = f"{prefixActiveStart}{icon_str}{prefixActiveEnd}"
icons += icon_str
elif notDone and not icon_numerals:
icon_str = empty_icon
if activeWorspaceID != id:
if looksconfig:
icon_str = f"{id}{prefixStart}{icon_str}{prefixEnd}"
else:
icon_str = f"{prefixStart}{icon_str}{prefixEnd}"
else:
if looksconfig:
icon_str = f"{id}{prefixActiveStart}{icon_str}{prefixActiveEnd}"
else:
icon_str = f"{prefixActiveStart}{icon_str}{prefixActiveEnd}"
icons += icon_str
print(icons)