local icon_path = project_path .. 'icons/'
local api_url = 'http://weather.yahooapis.com/forecastrss'
local units_set = '?u=c&w=' -- Default is Celsius
-local language = string.match(os.getenv("LANG"), "(%S*$*)[.]")
+local language = string.match(os.getenv("LANG"), "(%S*$*)[.]") or "en_US" -- if LANG is not set
local weather_data = nil
local notification = nil
local city_id = nil
local function fetch_weather()
local url = api_url .. units_set .. city_id
local f = io.popen("curl --connect-timeout 1 -fsm 3 '" .. url .. "'" )
- local text = f:read("*all")
+ local text = f:read("*a")
f:close()
-- In case of no connection or invalid city ID
yawn.icon:set_image(icon_path .. "na.png")
if text == "" then
weather_data = "Service not available at the moment."
- yawn.widget:set_text(" N/A")
+ yawn.widget:set_text(" N/A ")
else
weather_data = "City not found!\n" ..
"Are you sure " .. city_id ..
" is your Yahoo city ID?"
- yawn.widget:set_text(" ?")
+ yawn.widget:set_text(" ? ")
end
return
end
-- may still happens in case of bad connectivity
if weather_data == "" then
yawn.icon:set_image(icon_path .. "na.png")
- yawn.widget:set_text(" ?")
+ yawn.widget:set_text(" ? ")
return
end
yawn.icon:set_image(sky)
widget = yawn.widget
- forecast = weather_data:match(": %S.-,"):gsub(": ", ""):gsub(",", "")
+ _data = weather_data:match(": %S.-,") or weather_data
+ forecast = _data:gsub(": ", ""):gsub(",", "")
units = units:gsub(" ", "")
settings()
preset = yawn_notification_preset,
text = weather_data,
icon = sky,
- timeout = t_out
+ timeout = t_out,
+ screen = client.focus and client.focus.screen or 1
})
end