diff options
| -rw-r--r-- | weather-widget/README.md | 2 | ||||
| -rw-r--r-- | weather-widget/weather.lua | 24 | 
2 files changed, 20 insertions, 6 deletions
| diff --git a/weather-widget/README.md b/weather-widget/README.md index 6464fcc..730c1f5 100644 --- a/weather-widget/README.md +++ b/weather-widget/README.md @@ -16,6 +16,8 @@ It is possible to customize widget by providing a table with all or some of the  | `units` | `metric` | `metric` for celsius, `imperial` for fahrenheit |  | `both_units_widget` | `false` | show temperature in both units (15°C (59°F)) or in one (15°C) |  | `both_units_popup` | `false` | same as above but for popup | +| `notification_position` | `top_right` | The notification position | +  ### Example: diff --git a/weather-widget/weather.lua b/weather-widget/weather.lua index b0aa070..9befd6b 100644 --- a/weather-widget/weather.lua +++ b/weather-widget/weather.lua @@ -28,6 +28,7 @@ local function worker(args)      local units = args.units or 'metric'      local both_units_widget = args.both_units_widget or false      local both_units_popup = args.both_units_popup or false +    local position = args.notification_position or "top_right"      local weather_api_url = (              'https://api.openweathermap.org/data/2.5/weather' @@ -142,6 +143,15 @@ local function worker(args)          return s      end +    local function error_display(resp_json) +        local  err_resp = json.decode(resp_json) +        naughty.notify{ +            title = 'Weather Widget Error', +            text = err_resp.message, +            preset = naughty.config.presets.critical, +        } +    end +      weather_timer:connect_signal("timeout", function ()          local resp_json = {}          local res, status = http.request{ @@ -164,12 +174,13 @@ local function worker(args)          end          if (status ~= 200 and resp_json ~= nil and resp_json ~= '') then -            local err_resp = json.decode(resp_json) -            naughty.notify{ -                title = 'Weather Widget Error', -                text = err_resp.message, -                preset = naughty.config.presets.critical, -            } +            if (not pcall(error_display, resp_json)) then +                naughty.notify{ +                    title = 'Weather Widget Error', +                    text = 'Cannot parse answer', +                    preset = naughty.config.presets.critical, +                } +            end          elseif (resp_json ~= nil and resp_json ~= '') then              resp = json.decode(resp_json)              icon_widget.image = path_to_icons .. icon_map[resp.weather[1].icon] @@ -194,6 +205,7 @@ local function worker(args)                  '<b>Clouds:</b> ' .. resp.clouds.all .. '%<br>' ..                  '<b>Wind:</b> ' .. resp.wind.speed .. 'm/s (' .. to_direction(resp.wind.deg) .. ')',              timeout = 5, hover_timeout = 10, +            position = position,              width = (both_units_popup == true and 210 or 200)          }      end) | 
