summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZachIR <zachir@librem.one>2025-08-09 08:45:39 -0500
committerZachIR <zachir@librem.one>2025-08-09 08:45:39 -0500
commit722364ceebdbb709c8469249f6fd53037a5fe30b (patch)
treef8c8a099117c301e28ac4fe6f067eb34d895e642
parent746ef9801cb5da6f29ddb11707aad3f414e3fde2 (diff)
Add sb- versions of every blockHEADmaster
-rwxr-xr-xsb-backlight19
-rwxr-xr-xsb-battery21
-rwxr-xr-xsb-clock12
-rwxr-xr-xsb-cpu16
-rwxr-xr-xsb-disk20
-rwxr-xr-xsb-internet18
-rwxr-xr-xsb-memory12
-rwxr-xr-xsb-music24
-rwxr-xr-xsb-nettraf28
-rwxr-xr-xsb-volume23
10 files changed, 193 insertions, 0 deletions
diff --git a/sb-backlight b/sb-backlight
new file mode 100755
index 0000000..aba0945
--- /dev/null
+++ b/sb-backlight
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1)
+ pgrep -x pipewire >/dev/null && MIXER="pulsemixer" || \
+ pgrep -x pulseaudio >/dev/null && MIXER="pulsemixer" || \
+ MIXER="alsamixer"
+ setsid -f $TERMINAL -e $MIXER
+ ;;
+ 2) notify-send "Volume module" "\- Shows volume, X if muted.
+- Middle click to show this message.
+- Right click to mute.
+- Scroll to change." ;;
+ 3) volsv -t ;;
+ 4) volsv -i ;;
+ 5) volsv -d ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+printf "[%3.0f%%]" "$(bl -g)"
diff --git a/sb-battery b/sb-battery
new file mode 100755
index 0000000..28c0b36
--- /dev/null
+++ b/sb-battery
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 2) notify-send "Battery module" "- : discharging
+X : not charging
+? : unknown
++ : charging
+| : charged
+! : battery very low!" ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+ls /sys/class/power_supply/ | grep -i bat | head -1 | while read battery;
+do
+ capacity=$(cat "/sys/class/power_supply/$battery"/capacity) || break
+ status=$(sed "s/[Dd]ischarging/-/;s/[Nn]ot charging/X/;s/[Cc]harging/+/;s/[Uu]nknown/?/;s/[Ff]ull/|/" "/sys/class/power_supply/$battery"/status)
+
+ [ "$capacity" -le 25 ] && [ "$status" = "!" ] && warn="!"
+ printf "[%s%s%s]" "$status" "$warn" "$capacity"
+ unset warn
+done | sed 's/ *$//'
diff --git a/sb-clock b/sb-clock
new file mode 100755
index 0000000..cc6b0d9
--- /dev/null
+++ b/sb-clock
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/spawn<\/b>/")" && notify-send "Appointments" "$(calcurse -D ~/.config/calcurse -d3)" ;;
+ 2) notify-send "Time/date module" "\- Left click to show upcoming appointmnets for the next three days via \`calcurse -d3\` and show the month via \`cal\`
+- Middle click to show this message
+- Right click to open calcurse" ;;
+ 3) setsid -f "$TERMINAL" -e calcurse -D ~/.config/calcurse ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+printf "[%s]" "$(date "+%Y %b %d (%a) %I:%M%p")"
diff --git a/sb-cpu b/sb-cpu
new file mode 100755
index 0000000..5bdfd6b
--- /dev/null
+++ b/sb-cpu
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1) notify-send "CPU hogs" "$(ps axch -o comm,%cpu --sort=-%cpu | head)\\n(100% per core)" ;;
+ 2) notify-send "CPU module" "\- Shows CPU usage.
+- Click to show intensive progresses.
+- Middle click to show this tip
+- Right click to open htop" ;;
+ 3) setsid -f "$TERMINAL" -e htop ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+usage=$(mpstat 1 1 | sed '1,4d;s/.* //')
+output="$(echo $usage | awk '{printf ("%2.2f", (100 - $1))}' | cut -c-4)"
+echo -n "[$output%]"
+
diff --git a/sb-disk b/sb-disk
new file mode 100755
index 0000000..e71a276
--- /dev/null
+++ b/sb-disk
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+location=${1:-/}
+
+[ -d "$location" ] || exit
+
+case $BLOCK_BUTTON in
+ 1) notify-send "💽 Disk space" "$(df -h --output=target,used,size)" ;;
+ 3) notify-send "💽 Disk module" "\- Shows used hard drive space.
+- Click to show all disk info." ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+case "$location" in
+ "/home"* ) icon="h" ;;
+ "/mnt"* ) icon="m" ;;
+ *) icon="s";;
+esac
+
+printf "[%s: %s]" "$icon" "$(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')"
diff --git a/sb-internet b/sb-internet
new file mode 100755
index 0000000..8dfd24f
--- /dev/null
+++ b/sb-internet
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1) "$TERMINAL" -e nmtui; pkill -RTMIN+4 dwmblocks ;;
+ 2) notify-send "Internet module" "\- Click to connect
+X : no wifi connection
++ : wifi connection
+_ : no ethernet
+- : ethernet working" ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+case "$(cat /sys/class/net/w*/operstate 2>/dev/null)" in
+ down) wifiicon="X" ;;
+ up) wifiicon="$(awk '/^\s*w/ { print "+", int($3 * 100 / 70) "% " }' /proc/net/wireless)" ;;
+esac
+
+printf "[%s%s]" "$wifiicon" "$(sed "s/down/_/;s/up/-/" /sys/class/net/e*/operstate 2>/dev/null)"
diff --git a/sb-memory b/sb-memory
new file mode 100755
index 0000000..8b81626
--- /dev/null
+++ b/sb-memory
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1) notify-send "Memory hogs" "$(ps axch -o cmd:15,%mem --sort=-%mem | head)" ;;
+ 2) notify-send "Memory module" "\- Shows Memory Used/Total.
+- Click to show memory hogs.
+- Right click to open htop." ;;
+ 3) setsid -f "$TERMINAL" -e htop ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+free --mebi | sed -n '2{p;q}' | awk '{printf ("[%2.2fGiB/%2.2fGiB]", ( $3 / 1024), ($2 / 1024))}'
diff --git a/sb-music b/sb-music
new file mode 100755
index 0000000..22a41c8
--- /dev/null
+++ b/sb-music
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+filter() {
+ if [ `pgrep -x mpd` ]; then
+ MPCSTAT="$(mpc status)" ;
+ printf "%s%s%s" "$(echo $MPCSTAT | head -1 | grep -v '^volume' | cut -d'-' -f1 | sed 's/ $//' | cut -c-10)" "$(echo $MPCSTAT | grep -vq '^volume' && echo ' - ')" "$(echo $MPCSTAT | head -1 | grep -v '^volume' | cut -d'-' -f2 | sed 's/^ //' | cut -c-10)"
+ fi
+}
+
+pidof -x mpdup >/dev/null 2>&1 || mpdup >/dev/null 2>&1 &
+
+case $BLOCK_BUTTON in
+ 1) mpc status | filter ; setsid -f "$TERMINAL" -e ncmpcpp ;; # left click, open music player
+ 3) mpc toggle | filter ;; # right click, pause/unpause
+ 2) mpc status | filter ; notify-send "🎵 Music module" "\- Shows mpd song playing.
+- Italic when paused.
+- Left click opens ncmpcpp.
+- Middle click pauses.
+- Scroll changes track.";; # right click, pause/unpause
+ 4) mpc prev | filter ;; # scroll up, previous
+ 5) mpc next | filter ;; # scroll down, next
+ 6) mpc status | filter ; "$TERMINAL" -e "$EDITOR" "$0" ;;
+ *) filter ;;
+esac
diff --git a/sb-nettraf b/sb-nettraf
new file mode 100755
index 0000000..ac43416
--- /dev/null
+++ b/sb-nettraf
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Module showing network traffic. Shows how much data has been received (RX) or
+# transmitted (TX) since the previous time this script ran. So if run every
+# second, gives network traffic per second.
+
+case $BLOCK_BUTTON in
+ 3) notify-send "🌐 Network traffic module" "🔻: Traffic received
+🔺: Traffic transmitted" ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+update() {
+ sum=0
+ for arg; do
+ read -r i < "$arg"
+ sum=$(( sum + i ))
+ done
+ cache=${XDG_CACHE_HOME:-$HOME/.cache}/${1##*/}
+ [ -f "$cache" ] && read -r old < "$cache" || old=0
+ printf %d\\n "$sum" > "$cache"
+ printf %d\\n $(( (sum - old) / 1024 ))
+}
+
+rx=$(update /sys/class/net/[ew]*/statistics/rx_bytes)
+tx=$(update /sys/class/net/[ew]*/statistics/tx_bytes)
+
+printf "🔻%dKiB 🔺%dKiB\\n" "$rx" "$tx"
diff --git a/sb-volume b/sb-volume
new file mode 100755
index 0000000..03c9e0b
--- /dev/null
+++ b/sb-volume
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+case $BLOCK_BUTTON in
+ 1)
+ pgrep -x pipewire >/dev/null && MIXER="pulsemixer" || \
+ pgrep -x pulseaudio >/dev/null && MIXER="pulsemixer" || \
+ MIXER="alsamixer"
+ setsid -f $TERMINAL -e $MIXER
+ ;;
+ 2) notify-send "Volume module" "\- Shows volume, X if muted.
+- Middle click to show this message.
+- Right click to mute.
+- Scroll to change." ;;
+ 3) volsv -t ;;
+ 4) volsv -i ;;
+ 5) volsv -d ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+volstat="$(volsv -v)"
+mutstat="$(volsv -g)"
+echo "$mutstat" | grep -q "off" && printf "[X]" && exit
+vol="$(echo "$volstat" | grep '[0-9]\+%' | sed "s,.* \([0-9]\+\)%.*,\1,;1q")"
+printf "[%4s]" "$vol"