Weather info in i3status
I recently started using i3wm because it is light-weight, keyboard-friendly and uses the screen real-estate efficiently. I customized i3bar and i3status (which came installed with i3) to show system information and date/time. But there was no out-of-the-box feature to get weather information from i3 status.
I wanted a simple solution that does not require installing an external program like i3blocks, conky, dzen2, xmobar or lemonbar. It had to also preserve colors I had configured for the i3bar output. So I came up with this simple solution.
Step 1: Setup a cron job to retrieve weather information every half hour and store it in a temporary file.
*/5 * * * * curl -s wttr.in/montreal?T | head -n 7 > ~/.weather.cache
Step 2: Write a shell script to add this information to i3status data.
#!/bin/sh # shell script to prepend i3status with weather i3status | (read line && echo "$line" && read line && echo "$line" && read line && echo "$line" && while : do read line temp=$(cat ~/.weather.cache | grep -m 1 -Eo -e '-?[[:digit:]].*°C') status=$(cat ~/.weather.cache | head -n 3 | tail -n 1 | cut -c 16-) echo ",[{\"full_text\":\"${temp} ? ${status}\",\"color\":\"#00FF00\" },${line#,\[}" || exit 1 done)
Step 3: The~/.config/i3/config file needs to be updated for thestatus_command to pipe through this script, as follows.
bar { status_command .config/i3/weather.sh tray_output primary }
Step 4: The~/.i3status.conf file should also be updated to change the output to the JSON format.
general { output_format = "i3bar" colors = true interval = 5 }
You can find more information from the following links.
- https://i3wm.org/i3status/manpage.html
- https://github.com/i3/i3status/tree/master/contrib
- https://i3wm.org/docs/i3bar-protocol.html
- https://github.com/smxi/inxi
Published on System Code Geeks with permission by Keheliya Gallaba, partner at our SCG program. See the original article here: Weather info in i3status Opinions expressed by System Code Geeks contributors are their own. |
Thank you for this, works smoothly!
However, there is an unnecessary “?” at the 9th line of weather.sh before “${status}”