blob: f6814855bd0c8f03535e765163a1403b8b07fde0 (
plain)
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
|
from subprocess import run as _run
class Desktop:
def __init__(self):
self.id = None
self.name = None
self.focused = False
self.occupied = False
self.urgent = False
def run(command):
return _run(command.split(), capture_output=True).stdout.decode().strip()
def get_desktops():
focused = run("bspc query -D -d .focused")
occupied = run("bspc query -D -d .occupied").split("\n")
urgent = run("bspc query -D -d .urgent").split("\n")
desktops = []
for desktop_id in run("bspc query -D").split("\n"):
desktop = Desktop()
desktop.id = desktop_id
desktop.name = run(f"bspc query -D -d {desktop.id} --names")
desktop.focused = desktop.id == focused
desktop.occupied = desktop.id in occupied
desktop.urgent = desktop.id in urgent
desktops.append(desktop)
return desktops
def cut_name(name):
if len(name) > 70:
return name[:65] + "..."
else:
return name
def get_focused_window_name():
focused = run("bspc query -N -n")
if len(focused) == 0:
return ''
else:
focused = focused.lower()
for window in run("wmctrl -l").split("\n"):
wid, _, _, name = window.split(maxsplit=3)
if wid.lower() == focused:
return cut_name(name)
return ''
|