diff options
Diffstat (limited to 'i3blocks/.local')
-rwxr-xr-x | i3blocks/.local/bin/i3blocks-dunst | 38 | ||||
-rwxr-xr-x | i3blocks/.local/bin/i3blocks-title | 49 |
2 files changed, 87 insertions, 0 deletions
diff --git a/i3blocks/.local/bin/i3blocks-dunst b/i3blocks/.local/bin/i3blocks-dunst new file mode 100755 index 0000000..b21042f --- /dev/null +++ b/i3blocks/.local/bin/i3blocks-dunst @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import os +import subprocess + + +def muted(): + """Returns True if Dunst is muted""" + cmd = ["dunstctl", "is-paused"] + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) + output = proc.communicate()[0] + return "true" == output.strip().decode("UTF-8") + + +def notif(t): + """Returns notification count""" + cmd = ["dunstctl", "count", t] + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) + output = proc.communicate()[0] + return int(output.strip().decode("UTF-8")) + + +button = os.environ.get("BLOCK_BUTTON", None) + +if button == "1": + subprocess.run(["dunstctl", "history-pop"], check=True) +elif button == "3": + subprocess.run(["dunstctl", "set-paused", "toggle"], check=True) + + +if notif("waiting") > 0: + print("\uf1f6") +elif notif("displayed") > 0: + print("\uf0f3") +elif muted(): + print("\uf1f7") +else: + print("\uf0a2") diff --git a/i3blocks/.local/bin/i3blocks-title b/i3blocks/.local/bin/i3blocks-title new file mode 100755 index 0000000..b8e3213 --- /dev/null +++ b/i3blocks/.local/bin/i3blocks-title @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import os +from typing import Union + +import i3ipc +from i3ipc import Event +from i3ipc.events import WindowEvent, WorkspaceEvent + + +class Connection(i3ipc.Connection): + def handle( + self, + *events: Union[Event, str], + ): + def wrapped(handler): + for event in events: + self.on(event, handler) + return handler + + return wrapped + + +max_length = int(os.environ.get("max_length", 30)) + + +sway = Connection() + + +@sway.handle( + Event.WINDOW_FOCUS, + Event.WINDOW_TITLE, + Event.WINDOW_NEW, + Event.WINDOW_CLOSE, + Event.WORKSPACE_FOCUS, +) +def on_window_event(sway: i3ipc.Connection, event: WindowEvent | WorkspaceEvent): + focused = sway.get_tree() + while focused is not None and focused.ipc_data["type"] != "con": + focused = focused.find_focused() + + if focused: + print(focused.ipc_data["name"][:max_length]) + else: + print("") + + +if __name__ == "__main__": + sway.main() |