aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2025-04-03 21:32:14 -0400
committerBardofSprites <[email protected]>2025-04-03 21:32:14 -0400
commit7ff2f27a84c254d99a9e4d285e8da14453a48aa1 (patch)
tree1aff775af53fc6ea27de07b5ecebace535696c63 /bin
parent1ba0aaecfa3448e9ce01580b34c46e4ffa343098 (diff)
XMobar more scripts/modules
Diffstat (limited to 'bin')
-rwxr-xr-xbin/.local/bin/scripts/status-plain/music-plain51
-rwxr-xr-xbin/.local/bin/scripts/status-plain/weather-plain54
2 files changed, 105 insertions, 0 deletions
diff --git a/bin/.local/bin/scripts/status-plain/music-plain b/bin/.local/bin/scripts/status-plain/music-plain
new file mode 100755
index 0000000..60d8f4c
--- /dev/null
+++ b/bin/.local/bin/scripts/status-plain/music-plain
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# Music module script for dwmblocks
+
+truncate() {
+ echo "$1" | cut -c1-15
+}
+
+# Handle mouse events based on button clicks
+case $BLOCK_BUTTON in
+ 1) # Left click to pause/play
+ playerctl play-pause
+ pkill -RTMIN+10 "${STATUSBAR:-dwmblocks}" ;;
+ 2) # Middle click to open the music player
+ # Replace `your-music-player` with your actual music player command
+ emacs-launcher "music" & ;;
+ 3) # Right click to show notification
+ notify-send "šŸŽµ Music Module
+- Left click to play/pause.
+- Middle click to open music player.
+- Right click to show current track." ;;
+ 4) # Scroll up to go back
+ playerctl previous
+ pkill -RTMIN+10 "${STATUSBAR:-dwmblocks}" ;;
+ 5) # Scroll down to skip
+ playerctl next
+ pkill -RTMIN+10 "${STATUSBAR:-dwmblocks}" ;;
+esac
+
+# Get current track info
+artist="$(playerctl metadata artist 2>/dev/null || echo "none")"
+title="$(playerctl metadata title 2>/dev/null || echo "none")"
+
+# Truncate artist and title to 15 characters
+truncated_artist=$(truncate "$artist")
+truncated_title=$(truncate "$title")
+
+# Format the output as "artist - title"
+current_track="$truncated_artist - $truncated_title"
+
+playerstatus=$(playerctl status)
+
+case "$playerstatus" in
+ "Playing") icon="󰝚" ;;
+ "Paused") icon="" ;;
+ "Stopped") icon="ļ" ;;
+ "*") icon="" ;;
+esac
+
+# Print the current track
+echo "$icon $current_track"
diff --git a/bin/.local/bin/scripts/status-plain/weather-plain b/bin/.local/bin/scripts/status-plain/weather-plain
new file mode 100755
index 0000000..5de984b
--- /dev/null
+++ b/bin/.local/bin/scripts/status-plain/weather-plain
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Displays today's precipication chance (ā˜”), and daily low (🄶) and high (šŸŒž).
+# Usually intended for the statusbar.
+
+url="${WTTRURL:-wttr.in}"
+weatherreport="${XDG_CACHE_HOME:-$HOME/.cache}/weatherreport"
+
+# Get a weather report from 'wttr.in' and save it locally.
+getforecast() { curl -sf "$url/Louisville?M" > "$weatherreport" || exit 1; }
+
+# Forecast should be updated only once a day.
+checkforecast() {
+ [ -s "$weatherreport" ] && [ "$(stat -c %y "$weatherreport" 2>/dev/null |
+ cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ]
+}
+
+getprecipchance() {
+ echo "$weatherdata" | sed '16q;d' | # Extract line 16 from file
+ grep -wo "[0-9]*%" | # Find a sequence of digits followed by '%'
+ sort -rn | # Sort in descending order
+ head -1q # Extract first line
+}
+
+getdailyhighlow() {
+ echo "$weatherdata" | sed '13q;d' | # Extract line 13 from file
+ grep -o "m\\([-+]\\)*[0-9]\\+" | # Find temperatures in the format "m<signed number>"
+ sed 's/[+m]//g' | # Remove '+' and 'm'
+ sort -g | # Sort in ascending order
+ sed -e 1b -e '$!d' # Extract the first and last lines
+}
+
+readfile() { weatherdata="$(cat "$weatherreport")" ;}
+
+showweather() {
+ readfile
+ # printf "ā˜”%s 🄶%s°C šŸŒž%s°C\n" "$(getprecipchance)" $(getdailyhighlow)
+ printf " %s ļ‹œ %s°C  %s°C\n" "$(getprecipchance)" $(getdailyhighlow)
+}
+
+case $BLOCK_BUTTON in
+ 1) setsid -f "$TERMINAL" -n "floatterm" -c "floatterm" -g "150x35" -e less -Sfr "$weatherreport" ;;
+ 2) getforecast && showweather ;;
+ 3) notify-send "🌈 Weather module" "\- Left click for full forecast.
+- Middle click to update forecast.
+ā˜”: Chance of rain/snow
+🄶: Daily low
+šŸŒž: Daily high" ;;
+ 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+checkforecast || getforecast
+
+showweather