I've been strugling to get conky to show the weather, I just installed it and found out that yahoo discontinued the api url which was the one the conky theme was using (http://weather.yahooapis.com/forecastrss?w=1103816&u=c), I've tried changing the url to accuweather and openweather ones and nothing. I just don't understand how this works at all and I have no clue how to get it to work properly, here's the code:
##Weather
${image .jelly-weather-icons/conky_icons/circle2.png -s 190x190}
${texeci 1300 curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}#\&locCode\=$LOCCOD" -o #~/.cache/weather.xml}
${voffset -110}${offset 425}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 grep #"yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | #grep -o "[^\"]*"}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 14}${font}#${color1}
${execi 1300 cp -f .weather-icons/$(grep "yweather:condition" ~/.cache/weather.xml | grep -o #"code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*").png ~/.cache/weather.png}${image #~/.cache/weather.png -p 425,23 -s 35x35}
${offset 420}${voffset -105}${font ITC Avant Garde Gothic Pro:size=14} Sevilla
btw I found nothing on the internet that could help me out... thanks in advance :)
Edit1: Here is the api that the conky theme saves in the cache/weather.xml http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568 I'm slowly understanding how it works
Edit2: This is how the code looks now, I noticed I mistyped some # trying to comment the whole weather part. I just don't understand how conky reads xml (I don't know how to read xml myself but I suppose I can solve that with a few guides of xml :P)
##Weather
${image .jelly-weather-icons/conky_icons/circle2.png -s 190x190}
${texeci 1300 curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" -o ~/.cache/weather.xml}
${voffset -110}${offset 425}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 grep "weather:description" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 14}${font}${color1}
${execi 1300 cp -f .weather-icons/$(grep "yweather:condition" ~/.cache/weather.xml | grep -o "code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*").png ~/.cache/weather.png}${image ~/.cache/weather.png -p 425,23 -s 35x35}
${offset 420}${voffset -105}${font ITC Avant Garde Gothic Pro:size=14} Sevilla
Edit3: So I finally got it working thanks to @WinEunuuchs2Unix and @steeldriver , this is how the code finally looks for anyone who wants to use it in their conky code:
##Weather
${voffset -80}${offset 435}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" | jq -r '.list[0].main.temp' | awk '{printf("%.0f\n", $1)}'}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 24}${font}${color1}
${execi 1300 cp -f .iconos/$(curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" | jq -r '.list[0].weather[].icon').png ~/.cache/weather.png}${image ~/.cache/weather.png -p 425,20 -s 60x60}
${offset 420}${voffset -115}${font ITC Avant Garde Gothic Pro:bold:size=14} Sevilla
Basically what it does is read a json from the openweather url using curl
, and with jq
search for the values of .list[0].weather[].icon
and .list[0].main.temp
as for the temperature it outputs a value with 2 decimal digits which I cut out for personal preferences using awk '{printf("%.0f\n", $1)}'
the rest of the code is just conky's way to understand where you want it and how you want it. If you want to use it for yourself just change Sevilla
for your city, and change curl -s "...your location api url..."
note that if you use a different site for your api url you will have to change jq
to fit the new json data. Also note that you will have to create a folder with all the icons from this icon list or use your own icons but remember to use the same naming (01d.png, 02d.png, ...) and also don't forget to edit this ${execi 1300 cp -f .iconos/$(curl -s "http:/...
and replace .iconos/
with the directory of your folder.
Here if you want to try out the conky theme
Edit June 7, 2020
I have conky on a 4K TV now so there is ample space to expand the height with weather information.
It is very important to select a mono spaced font that supports arrow signs for wind direction. I choose GE Inspira Mono 12 point but had to restore to Ubuntu 10.5 point afterwards:
This is what it looks like now:
Yes it is unusually cold for 6 pm on June 7. Worse yet all the rain caused a 20 block power outage a couple hours ago! It was a mixed blessing because I got to install the 32 GB RAM upgrade I bought in March 2020 but was procrastinating on. System is snappier now!
NOTE: Sunrise and Sunset times are fake. I was testing a new function in
eyesome
today to override the daily automatic retrieval off the internet of Sun Times (aka Twilight times).Original Answer
Weather is too much information to squeeze into my conky display which is already pretty full. So instead I put it in my terminal splash screen:
You can get the same information from the command line which you can call from conky:
To get your city name for
wttr.in
see:Display an image in conky
I saved a picture of today's weather from darksky.net and displayed it in conky with the
${image}
command:The relevant conky commands are:
${image}
command.Disclaimer: I don't remember where I got this.
I have a little script
weather.sh
Then in the .conkyrc you have
${exec [location of script]/weather.sh [zip code]}
The end result is
I made a shell script that uses wethr snap app. This app shows weather based on your location on a terminal.
Asunción, Paraguay: 31C ☀️
Currently Conky doesn't handle emojis very well, so I had to use pangoview to convert the text to an image.
I use it on conky with
Add also this line, to enable images reload in conky
Here's the script
https://github.com/alefq/helper-scripts/blob/master/bin/weather.sh
Crontab update every 30 minutes
The final result
I was very inspired by this thread as I did not find any working Conky widget and went down to learn and create my own (based on code posted here).
Here's a widget that uses IP geolocation to identify (or guess) your rough position and display 5-day weather accordingly. Uses Big Data Cloud and Open Weather Maps APIs.
I hope it works for all of you. Simply download the file, save it to the ~/.conky directory and execute:
Download Weather widget file here
Weather widget snapshot looks like :
I wrote a command line tool to create weather widgets in conky using data from the openweathermap (onecall) API. You can make them as simple or as complex as you want. For example, to display
Clouds: 22°
updated every 20 minutes, use:There are more options available. See here for more information.