From 96d01820c1311de7703a80446b228e33b65eab7c Mon Sep 17 00:00:00 2001 From: Zhongheng Liu Date: Mon, 18 May 2026 11:48:00 +0200 Subject: [PATCH] init util-scripts repo --- batman.sh | 2 + docked-setup.sh | 2 + mem.sh | 1 + screenshot-file.sh | 5 ++ screenshot.sh | 1 + stats.sh | 1 + vol.sh | 115 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 127 insertions(+) create mode 100755 batman.sh create mode 100755 docked-setup.sh create mode 100755 mem.sh create mode 100755 screenshot-file.sh create mode 100755 screenshot.sh create mode 100755 stats.sh create mode 100755 vol.sh diff --git a/batman.sh b/batman.sh new file mode 100755 index 0000000..1440ac5 --- /dev/null +++ b/batman.sh @@ -0,0 +1,2 @@ +#!/usr/bin/bash +echo $(wcalc -q "round($(cat /sys/class/power_supply/BAT1/charge_now)/$(cat /sys/class/power_supply/BAT1/charge_full) * 100)")% diff --git a/docked-setup.sh b/docked-setup.sh new file mode 100755 index 0000000..9501045 --- /dev/null +++ b/docked-setup.sh @@ -0,0 +1,2 @@ +sleep 5 +wlr-randr --output "HDMI-A-1" --on --mode "2560x1440@144.001007" --scale 1 diff --git a/mem.sh b/mem.sh new file mode 100755 index 0000000..95a402b --- /dev/null +++ b/mem.sh @@ -0,0 +1 @@ +free -g | awk 'NR==2 {printf "%dG/%dG\n", $3, $2}' diff --git a/screenshot-file.sh b/screenshot-file.sh new file mode 100755 index 0000000..46d9a73 --- /dev/null +++ b/screenshot-file.sh @@ -0,0 +1,5 @@ +#!/usr/bin/sh +IFS="" +file="$HOME/Screenshots/$(date '+%Y-%m-%d-%H-%M-%S.png')" +echo $file +slurp | grim -g - $file diff --git a/screenshot.sh b/screenshot.sh new file mode 100755 index 0000000..2cb8d22 --- /dev/null +++ b/screenshot.sh @@ -0,0 +1 @@ +slurp | grim -g - - | wl-copy diff --git a/stats.sh b/stats.sh new file mode 100755 index 0000000..51f0ab0 --- /dev/null +++ b/stats.sh @@ -0,0 +1 @@ +echo "<$(hostname)@$(uname -r)> [BAT: $(batman)] [MEM: $(mem)]" diff --git a/vol.sh b/vol.sh new file mode 100755 index 0000000..e12df6d --- /dev/null +++ b/vol.sh @@ -0,0 +1,115 @@ +#!/usr/bin/env bash +# +# volume-notify.sh — adjust volume via wpctl + show notification via dunstify +# +# Usage: +# volume-notify.sh up → raise volume +# volume-notify.sh down → lower volume +# volume-notify.sh mute → toggle mute +# +# Adjust the step size and icons as desired. + +# Which sink to use — default audio sink +SINK="@DEFAULT_SINK@" + +# Step percent (use percentage step) +STEP="5%" + +# Notification stack tag (so dunst replaces same notification) +STACK_TAG="volume-notify" + +# Icons (set your paths or icon names) +ICON_HIGH="audio-volume-high" +ICON_MED="audio-volume-medium" +ICON_LOW="audio-volume-low" +ICON_MUTED="audio-volume-muted" + +# Increase volume +vol_up() { + wpctl set-volume $SINK $STEP+ -l 1 +} + +# Decrease volume +vol_down() { + wpctl set-volume $SINK $STEP- -l 1 +} + +# Toggle mute +vol_mute() { + wpctl set-mute $SINK toggle +} + +# Get current volume (floating between 0.0-∞, where 1.0 = 100%) and compute percent +get_volume_percent() { + # Example output: “Volume: 0.50” or “Volume: 0.50 [50%]” + local raw + raw=$(wpctl get-volume $SINK 2>/dev/null | awk '/Volume:/ {print $2}') + # convert to percent + # float *100 + local pct + pct=$(awk "BEGIN { printf \"%d\", ($raw * 100) }") + echo "$pct" +} + +# Get mute state (yes/no) +get_mute_state() { + local m + m=$(wpctl get-volume $SINK 2>/dev/null | awk '/Mute:/ {print $2}') + echo "$m" +} + +# Send the notification +send_notification() { + local pct mute icon bar + pct=$(get_volume_percent) + mute=$(get_mute_state) + + if [[ "$mute" == "yes" ]]; then + icon="$ICON_MUTED" + # we can treat volume as 0 + pct=0 + else + # pick icon based on level + if (( pct >= 66 )); then + icon="$ICON_HIGH" + elif (( pct >= 33 )); then + icon="$ICON_MED" + else + icon="$ICON_LOW" + fi + fi + + # Optional: build a simple textual bar (e.g., █ or ░) + # e.g., length 20, filled proportionally + local barlen=20 + local filled=$(( (pct * barlen) / 100 )) + bar=$(printf '%*s' "$filled" '' | tr ' ' '█') + bar+=$(printf '%*s' "$((barlen - filled))" '' | tr ' ' '░') + + # Send notification: use value hint for progress bar + dunstify -i "$icon" \ + -u normal \ + -h string:x-dunst-stack-tag:$STACK_TAG \ + -h int:value:$pct "Volume: ${pct}%" +} + +# Main logic +case "$1" in + up) + vol_up + send_notification + ;; + down) + vol_down + send_notification + ;; + mute) + vol_mute + send_notification + ;; + *) + echo "Usage: $0 {up|down|mute}" + exit 1 + ;; +esac +