i3blocks-config/scripts/rofi-wttr
2024-02-08 18:36:37 -05:00

76 lines
1.8 KiB
Bash
Executable File

#! /usr/bin/env bash
###### Variables ######
LABEL="${LABEL:-}"
LOCATION="${LOCATION:-}"
FONT="${FONT:-Monospace 10}"
ROFI_CONFIG_FILE="${ROFI_CONFIG_FILE:-/dev/null}"
BAR_POSITION="${BAR_POSITION:-bottom}"
###### Variables ######
###### Functions ######
# print the full weather
# see https://github.com/chubin/wttr.in#usage for full configuration options
print_weather_report() {
if [[ $LOCATION != " " ]]; then
curl https://wttr.in/$LOCATION?T
else
curl https://wttr.in/?T
fi
}
# print the one line weather
# see https://github.com/chubin/wttr.in#one-line-output for formatting options
print_weather_line() {
if [[ $LOCATION != " " ]]; then
curl -s https://wttr.in/${LOCATION}?u\&format="%C+%c+%t+(%f)+%w" | tr -d \"
else
curl -s 'https://wttr.in/?u\&format="%C+%c+%t+(%f)+%w"' | tr -d \"
fi
}
###### Functions ######
###### Main body ######
# handle any click
# rofi pop up
case "$BLOCK_BUTTON" in
1|2|3)
IFS=
weather_report=$(print_weather_report)
# check bar position and adjust anchor accordingly
if [[ $BAR_POSITION = "top" ]]; then
anchor="northwest"
else
anchor="southwest"
fi
# open rofi
# (add the following option to rofi command with proper config file, if needed)
echo $weather_report \
| rofi \
-dmenu \
-markup-rows \
-font $FONT \
-m -3 \
-theme-str 'window {width: 53%; anchor: '"$anchor"'; location: northwest;}' \
-theme-str 'listview {lines: '"$(echo $weather_report | wc -l)"' ;scrollbar: false;}' \
-theme $ROFI_CONFIG_FILE \
-p "Detailed weather report"
esac
# print blocklet text
if [[ $LABEL != " " ]]; then
echo $LABEL$(print_weather_line)
else
echo $(print_weather_line)
fi
###### Main body ######