From 7ff2f27a84c254d99a9e4d285e8da14453a48aa1 Mon Sep 17 00:00:00 2001 From: BardofSprites <89086143+BardofSprites@users.noreply.github.com> Date: Thu, 3 Apr 2025 21:32:14 -0400 Subject: XMobar more scripts/modules --- bin/.local/bin/scripts/status-plain/music-plain | 51 +++++++++++++++++++++ bin/.local/bin/scripts/status-plain/weather-plain | 54 +++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100755 bin/.local/bin/scripts/status-plain/music-plain create mode 100755 bin/.local/bin/scripts/status-plain/weather-plain (limited to 'bin/.local') 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" + 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 -- cgit v1.2.3