summaryrefslogtreecommitdiff
path: root/.local/bin/lemonbar/bspc.py
diff options
context:
space:
mode:
authorAndrew Guschin <saintruler@gmail.com>2021-05-10 14:44:07 +0400
committerAndrew Guschin <saintruler@gmail.com>2021-05-10 14:44:07 +0400
commit40ce35bd2f379f2c30e51173752926f8c620ffd6 (patch)
treed8bb4e1651758edd2af52e4b0a4b40c3c0f13c0e /.local/bin/lemonbar/bspc.py
parent2f6db370d4086eca956279ea41cd305b474f9caf (diff)
Changed window manager to bspwm and added custom config for lemonbar
Diffstat (limited to '.local/bin/lemonbar/bspc.py')
-rw-r--r--.local/bin/lemonbar/bspc.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/.local/bin/lemonbar/bspc.py b/.local/bin/lemonbar/bspc.py
new file mode 100644
index 0000000..f2b3cb2
--- /dev/null
+++ b/.local/bin/lemonbar/bspc.py
@@ -0,0 +1,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 get_focused_window():
+ return run("bspc query -N -n")
+
+
+def cut_name(name):
+ if len(name) > 70:
+ return name[:65] + "..."
+ else:
+ return name
+
+
+def get_focused_window_name():
+ focused = get_focused_window().lower()
+ for window in run("wmctrl -l").split("\n"):
+ wid, _, _, name = window.split(maxsplit=3)
+ if wid.lower() == focused:
+ return cut_name(name)
+ return ''
+
+