X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/a5b05fa47994ab1c7b15d59b24fb3f5aa2abd877..71ca1bd76739f5d4f11cc065f2943f1cb87627ab:/widget/weather.lua diff --git a/widget/weather.lua b/widget/weather.lua index 17fc4d7..9c1e797 100644 --- a/widget/weather.lua +++ b/widget/weather.lua @@ -1,9 +1,8 @@ - --[[ - - Licensed under GNU General Public License v2 - * (c) 2015, Luke Bonham - + + Licensed under GNU General Public License v2 + * (c) 2015, Luca CPZ + --]] local helpers = require("lain.helpers") @@ -11,11 +10,10 @@ local json = require("lain.util").dkjson local focused = require("awful.screen").focused local naughty = require("naughty") local wibox = require("wibox") -local math = { floor = math.floor } -local os = { time = os.time, - date = os.date } -local string = { format = string.format, - gsub = string.gsub } +local math = math +local os = os +local string = string +local type = type local tonumber = tonumber -- OpenWeatherMap @@ -25,7 +23,7 @@ local tonumber = tonumber local function factory(args) local weather = { widget = wibox.widget.textbox() } local args = args or {} - local APPID = args.APPID or "3e321f9414eaedbfab34983bda77a66e" -- lain default + local APPID = args.APPID or "3e321f9414eaedbfab34983bda77a66e" -- lain's default local timeout = args.timeout or 60 * 15 -- 15 min local timeout_forecast = args.timeout or 60 * 60 * 24 -- 24 hrs local current_call = args.current_call or "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s&APPID=%s'" @@ -54,7 +52,7 @@ local function factory(args) weather.icon_path = icons_path .. "na.png" weather.icon = wibox.widget.imagebox(weather.icon_path) - function weather.show(t_out) + function weather.show(seconds) weather.hide() if followtag then @@ -66,12 +64,12 @@ local function factory(args) weather.forecast_update() end - weather.notification = naughty.notify({ + weather.notification = naughty.notify { + preset = notification_preset, text = weather.notification_text, icon = weather.icon_path, - timeout = t_out, - preset = notification_preset - }) + timeout = type(seconds == "number") and seconds or notification_preset.timeout + } end function weather.hide() @@ -116,12 +114,12 @@ local function factory(args) weather_now, pos, err = json.decode(f, 1, nil) if not err and type(weather_now) == "table" and tonumber(weather_now["cod"]) == 200 then - local now = os.time(os.date("!*t")) local sunrise = tonumber(weather_now["sys"]["sunrise"]) local sunset = tonumber(weather_now["sys"]["sunset"]) local icon = weather_now["weather"][1]["icon"] + local loc_now = os.time() - if sunrise <= now and now <= sunset then + if sunrise <= loc_now and loc_now <= sunset then icon = string.gsub(icon, "n", "d") else icon = string.gsub(icon, "d", "n")