diff options
| author | Andrew Guschin <saintruler@gmail.com> | 2021-05-10 14:44:07 +0400 |
|---|---|---|
| committer | Andrew Guschin <saintruler@gmail.com> | 2021-05-10 14:44:07 +0400 |
| commit | 40ce35bd2f379f2c30e51173752926f8c620ffd6 (patch) | |
| tree | d8bb4e1651758edd2af52e4b0a4b40c3c0f13c0e /.local/bin/lemonbar/bspc.py | |
| parent | 2f6db370d4086eca956279ea41cd305b474f9caf (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.py | 55 |
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 '' + + |