Organising
This commit is contained in:
88
.config/waybar/indicators/statusbar/sb-forecast
Executable file
88
.config/waybar/indicators/statusbar/sb-forecast
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Displays todays precipication chance () and daily low () and high ().
|
||||
# Usually intended for the statusbar.
|
||||
|
||||
# If we have internet, get a weather report from wttr.in and store it locally.
|
||||
# You could set up a shell alias to view the full file in a pager in the
|
||||
# terminal if desired. This function will only be run once a day when needed.
|
||||
weather_report="${XDG_DATA_HOME:-$HOME/.local/share}/weather_report"
|
||||
|
||||
get_forecast() {
|
||||
curl -sf "wttr.in/$LOCATION?format=j1" > "$weather_report" || exit 1
|
||||
}
|
||||
|
||||
codes="113=
|
||||
116=
|
||||
119=
|
||||
122=
|
||||
143=
|
||||
176=
|
||||
179=
|
||||
182=
|
||||
185=
|
||||
200=
|
||||
227=
|
||||
230=
|
||||
248=
|
||||
260=
|
||||
263=
|
||||
266=
|
||||
281=
|
||||
284=
|
||||
293=
|
||||
296=
|
||||
299=
|
||||
302=
|
||||
305=
|
||||
308=
|
||||
311=
|
||||
314=
|
||||
317=
|
||||
320=
|
||||
323=
|
||||
326=
|
||||
329=
|
||||
332=
|
||||
335=
|
||||
338=
|
||||
350=
|
||||
353=
|
||||
356=
|
||||
359=
|
||||
362=
|
||||
365=
|
||||
368=
|
||||
371=
|
||||
374=
|
||||
377=
|
||||
386=
|
||||
389=
|
||||
392=
|
||||
395="
|
||||
|
||||
show_weather() {
|
||||
weather_code="$(cat "$weather_report" | jq -r '.current_condition[0].weatherCode')"
|
||||
temperature="$(cat "$weather_report" | jq -r '.current_condition[0].FeelsLikeC')"
|
||||
|
||||
echo "$codes" | sed -n "/$weather_code/{s/[0-9]*=//;p;q}" | tr -d '\n'
|
||||
|
||||
symbol="$([[ $temperature -lt 15 ]] && echo || echo )"
|
||||
|
||||
echo " $temperature $symbol"
|
||||
}
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) setsid -f "$TERMINAL" -e curl "wttr.in/$LOCATION";;
|
||||
2) get_forecast && show_weather ;;
|
||||
3) notify-send "🌈 Weather module" "\- Left click for full forecast.
|
||||
- Middle click to update forecast." ;;
|
||||
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||
esac
|
||||
|
||||
# The test if our forcecast is updated to the day. If it isn't download a new
|
||||
# weather report from wttr.in with the above function.
|
||||
[ "$(stat -c %y "$weather_report" 2>/dev/null | cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ] ||
|
||||
get_forecast
|
||||
|
||||
show_weather
|
||||
Reference in New Issue
Block a user