summaryrefslogtreecommitdiff
path: root/.local
diff options
context:
space:
mode:
Diffstat (limited to '.local')
-rwxr-xr-x.local/bin/dwmbar/dwm-battery6
-rwxr-xr-x.local/bin/dwmbar/dwm-clock2
-rwxr-xr-x.local/bin/dwmbar/dwm-packages6
-rwxr-xr-x.local/bin/dwmbar/dwm-volume91
4 files changed, 105 insertions, 0 deletions
diff --git a/.local/bin/dwmbar/dwm-battery b/.local/bin/dwmbar/dwm-battery
new file mode 100755
index 0000000..c2e66a3
--- /dev/null
+++ b/.local/bin/dwmbar/dwm-battery
@@ -0,0 +1,6 @@
+#!/bin/sh
+for battery in /sys/class/power_supply/BAT?
+do
+ capacity=$(cat "$battery"/capacity) || break
+ printf "%s%%" "$capacity"
+done | sed 's/ *$//'
diff --git a/.local/bin/dwmbar/dwm-clock b/.local/bin/dwmbar/dwm-clock
new file mode 100755
index 0000000..b793e7e
--- /dev/null
+++ b/.local/bin/dwmbar/dwm-clock
@@ -0,0 +1,2 @@
+#!/bin/sh
+printf "$(date "+%d %b (%a) %k:%M")"
diff --git a/.local/bin/dwmbar/dwm-packages b/.local/bin/dwmbar/dwm-packages
new file mode 100755
index 0000000..846da22
--- /dev/null
+++ b/.local/bin/dwmbar/dwm-packages
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+pacmancnt=$(pacman -Qu | grep -Fcv "[ignored]")
+aurcnt=$(yay -Qau | grep -Fcv "[ignored]")
+printf "$pacmancnt+$aurcnt"
+
diff --git a/.local/bin/dwmbar/dwm-volume b/.local/bin/dwmbar/dwm-volume
new file mode 100755
index 0000000..50b04e8
--- /dev/null
+++ b/.local/bin/dwmbar/dwm-volume
@@ -0,0 +1,91 @@
+#!/usr/bin/env python3
+from subprocess import run as _run
+import re
+
+
+def run(command):
+ return _run(command.split(), capture_output=True).stdout.decode().strip()
+
+
+def get_default_sink():
+ default_name = None
+ for line in run("pactl info").split("\n"):
+ key, val = line.split(": ")
+ if key == "Default Sink":
+ default_name = val
+ break
+
+ if default_name is None:
+ return None
+
+ for sid, sink in get_sinks().items():
+ if sink["Name"] == default_name:
+ return sink
+ return None
+
+
+def get_sinks():
+ SINK, PARAMS, PARAM = 0, 1, 2
+ parsing = SINK
+
+ re_param_str = re.compile("(.+?): (.*)")
+ re_param_list = re.compile("(.+?):")
+
+ current_sink = None
+ current_param = None
+
+ sinks = {}
+ for line in run("pactl list sinks").split("\n"):
+ indent = line.count("\t")
+ line = line.strip()
+
+ if parsing == SINK:
+ if line.startswith("Sink"):
+ n = line.split()[1]
+ sinks[n] = {}
+ current_sink = sinks[n]
+
+ parsing = PARAMS
+
+ elif parsing == PARAMS:
+ if line == '':
+ parsing = SINK
+ continue
+
+ match = re_param_str.match(line)
+ if indent == 1 and match is not None:
+ name, value = match.groups()
+ current_param = name
+ current_sink[name] = value
+ continue
+
+ match = re_param_list.match(line)
+ if indent == 1 and match is not None:
+ name = match.group(1)
+ current_param = name
+ current_sink[name] = []
+ continue
+
+ value = current_sink[name]
+ if isinstance(value, str):
+ current_sink[name] = [value]
+
+ current_sink[name].append(line)
+
+ return sinks
+
+
+def get_sink_volume(sink):
+ if sink is None:
+ return "None"
+ if sink["Mute"] == "yes":
+ return "Muted"
+
+ match = re.search(r"(\d+?)%", sink["Volume"][0])
+ if match is not None:
+ return f"{match.groups()[0]}%"
+
+
+def_sink = get_default_sink()
+vol = get_sink_volume(def_sink)
+print(vol)