diff options
| author | BardofSprites <[email protected]> | 2025-04-03 21:32:14 -0400 |
|---|---|---|
| committer | BardofSprites <[email protected]> | 2025-04-03 21:32:14 -0400 |
| commit | 7ff2f27a84c254d99a9e4d285e8da14453a48aa1 (patch) | |
| tree | 1aff775af53fc6ea27de07b5ecebace535696c63 /bin | |
| parent | 1ba0aaecfa3448e9ce01580b34c46e4ffa343098 (diff) | |
XMobar more scripts/modules
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/.local/bin/scripts/status-plain/music-plain | 51 | ||||
| -rwxr-xr-x | bin/.local/bin/scripts/status-plain/weather-plain | 54 |
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 |
