From 03c38c671eb6e8960fde871f12f69aeea5079978 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Mon, 14 Jun 2021 20:35:40 +0400 Subject: Added scripts for dwm statusbar --- .local/bin/dwmbar/dwm-battery | 6 +++ .local/bin/dwmbar/dwm-clock | 2 + .local/bin/dwmbar/dwm-packages | 6 +++ .local/bin/dwmbar/dwm-volume | 91 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100755 .local/bin/dwmbar/dwm-battery create mode 100755 .local/bin/dwmbar/dwm-clock create mode 100755 .local/bin/dwmbar/dwm-packages create mode 100755 .local/bin/dwmbar/dwm-volume (limited to '.local') 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) -- cgit v1.2.3