From 8c5b64675dfbf196871ee31cf22920627019bd84 Mon Sep 17 00:00:00 2001 From: luke bonham Date: Thu, 2 Jul 2015 12:06:07 +0200 Subject: [PATCH] better weather module: OpenWeatherMap; #105 --- asyncshell.lua | 4 +- .../openweathermap/01d.png | Bin .../openweathermap/01n.png | Bin .../openweathermap/02d.png | Bin .../openweathermap/02n.png | Bin .../openweathermap/03d.png | Bin .../openweathermap/03n.png | Bin .../openweathermap/04d.png | Bin icons/openweathermap/04n.png | 1 + .../Rain.png => icons/openweathermap/09d.png | Bin icons/openweathermap/09n.png | 1 + .../openweathermap/10d.png | Bin icons/openweathermap/10n.png | 1 + .../openweathermap/11d.png | Bin icons/openweathermap/11n.png | 1 + .../openweathermap/13d.png | Bin icons/openweathermap/13n.png | 1 + .../Foggy.png => icons/openweathermap/50d.png | Bin icons/openweathermap/50n.png | 1 + icons/openweathermap/README.md | 3 + .../icons => icons/openweathermap}/na.png | Bin util/dkjson.lua | 713 ++++++++++++++++++ widgets/contrib/ccurr.lua | 2 +- widgets/weather.lua | 125 +++ widgets/yawn/icons/BlowingSnow.png | Bin 11454 -> 0 bytes widgets/yawn/icons/DayFair.png | 1 - widgets/yawn/icons/DayFairWindy.png | 1 - widgets/yawn/icons/Drizzle.png | 1 - widgets/yawn/icons/Fog.png | 1 - widgets/yawn/icons/FreezingDrizzle.png | Bin 13166 -> 0 bytes widgets/yawn/icons/FreezingRain.png | Bin 13979 -> 0 bytes widgets/yawn/icons/Hail.png | Bin 7325 -> 0 bytes widgets/yawn/icons/Haze.png | 1 - widgets/yawn/icons/HeavyRain.png | 1 - widgets/yawn/icons/LightRain.png | 1 - widgets/yawn/icons/LightSnow.png | 1 - widgets/yawn/icons/LightSnowShowers.png | Bin 8779 -> 0 bytes widgets/yawn/icons/Mist.png | 1 - widgets/yawn/icons/MixedRainAndHail.png | Bin 9060 -> 0 bytes widgets/yawn/icons/MixedRainAndSleet.png | Bin 10978 -> 0 bytes widgets/yawn/icons/MixedRainAndSnow.png | Bin 10808 -> 0 bytes widgets/yawn/icons/NightFair.png | 1 - widgets/yawn/icons/NightFairWindy.png | 1 - widgets/yawn/icons/README.md | 6 - widgets/yawn/icons/Sleet.png | 1 - widgets/yawn/icons/Snow.png | 1 - widgets/yawn/icons/SnowFlurries.png | 1 - widgets/yawn/icons/SnowShowers.png | Bin 9961 -> 0 bytes widgets/yawn/icons/Sunny.png | Bin 14018 -> 0 bytes widgets/yawn/icons/ThunderintheVicinity.png | 1 - widgets/yawn/icons/Wind.png | Bin 8726 -> 0 bytes widgets/yawn/init.lua | 206 ----- widgets/yawn/localizations/de_DE | 61 -- widgets/yawn/localizations/fr_FR | 61 -- widgets/yawn/localizations/it_IT | 61 -- .../yawn/localizations/localization_template | 61 -- widgets/yawn/localizations/ru_RU | 61 -- widgets/yawn/localizations/zh_CN | 61 -- widgets/yawn/localizations/zh_TW | 61 -- wiki | 2 +- 60 files changed, 850 insertions(+), 659 deletions(-) rename widgets/yawn/icons/DayClear.png => icons/openweathermap/01d.png (100%) rename widgets/yawn/icons/NightClear.png => icons/openweathermap/01n.png (100%) rename widgets/yawn/icons/DayPartlyCloudy.png => icons/openweathermap/02d.png (100%) rename widgets/yawn/icons/NightPartlyCloudy.png => icons/openweathermap/02n.png (100%) rename widgets/yawn/icons/DayMostlyCloudy.png => icons/openweathermap/03d.png (100%) rename widgets/yawn/icons/NightMostlyCloudy.png => icons/openweathermap/03n.png (100%) rename widgets/yawn/icons/Cloudy.png => icons/openweathermap/04d.png (100%) create mode 120000 icons/openweathermap/04n.png rename widgets/yawn/icons/Rain.png => icons/openweathermap/09d.png (100%) create mode 120000 icons/openweathermap/09n.png rename widgets/yawn/icons/Showers.png => icons/openweathermap/10d.png (100%) create mode 120000 icons/openweathermap/10n.png rename widgets/yawn/icons/RainThunder.png => icons/openweathermap/11d.png (100%) create mode 120000 icons/openweathermap/11n.png rename widgets/yawn/icons/HeavySnow.png => icons/openweathermap/13d.png (100%) create mode 120000 icons/openweathermap/13n.png rename widgets/yawn/icons/Foggy.png => icons/openweathermap/50d.png (100%) create mode 120000 icons/openweathermap/50n.png create mode 100644 icons/openweathermap/README.md rename {widgets/yawn/icons => icons/openweathermap}/na.png (100%) create mode 100644 util/dkjson.lua create mode 100644 widgets/weather.lua delete mode 100755 widgets/yawn/icons/BlowingSnow.png delete mode 120000 widgets/yawn/icons/DayFair.png delete mode 120000 widgets/yawn/icons/DayFairWindy.png delete mode 120000 widgets/yawn/icons/Drizzle.png delete mode 120000 widgets/yawn/icons/Fog.png delete mode 100755 widgets/yawn/icons/FreezingDrizzle.png delete mode 100755 widgets/yawn/icons/FreezingRain.png delete mode 100755 widgets/yawn/icons/Hail.png delete mode 120000 widgets/yawn/icons/Haze.png delete mode 120000 widgets/yawn/icons/HeavyRain.png delete mode 120000 widgets/yawn/icons/LightRain.png delete mode 120000 widgets/yawn/icons/LightSnow.png delete mode 100755 widgets/yawn/icons/LightSnowShowers.png delete mode 120000 widgets/yawn/icons/Mist.png delete mode 100755 widgets/yawn/icons/MixedRainAndHail.png delete mode 100755 widgets/yawn/icons/MixedRainAndSleet.png delete mode 100755 widgets/yawn/icons/MixedRainAndSnow.png delete mode 120000 widgets/yawn/icons/NightFair.png delete mode 120000 widgets/yawn/icons/NightFairWindy.png delete mode 100644 widgets/yawn/icons/README.md delete mode 120000 widgets/yawn/icons/Sleet.png delete mode 120000 widgets/yawn/icons/Snow.png delete mode 120000 widgets/yawn/icons/SnowFlurries.png delete mode 100755 widgets/yawn/icons/SnowShowers.png delete mode 100755 widgets/yawn/icons/Sunny.png delete mode 120000 widgets/yawn/icons/ThunderintheVicinity.png delete mode 100755 widgets/yawn/icons/Wind.png delete mode 100644 widgets/yawn/init.lua delete mode 100644 widgets/yawn/localizations/de_DE delete mode 100644 widgets/yawn/localizations/fr_FR delete mode 100644 widgets/yawn/localizations/it_IT delete mode 100644 widgets/yawn/localizations/localization_template delete mode 100644 widgets/yawn/localizations/ru_RU delete mode 100644 widgets/yawn/localizations/zh_CN delete mode 100644 widgets/yawn/localizations/zh_TW diff --git a/asyncshell.lua b/asyncshell.lua index 36ccc47..0aafa17 100644 --- a/asyncshell.lua +++ b/asyncshell.lua @@ -10,11 +10,9 @@ -- How to use... -- ...asynchronously: -- asyncshell.request('wscript -Kiev', function(f) wwidget.text = f:read("*l") end) --- ...synchronously +-- ...synchronously: -- widget:set_text(asyncshell.demand('wscript -Kiev', 5):read("*l") or "Error") --- This is more cpu demanding, but makes things faster. - local spawn = require('awful.util').spawn asyncshell = {} diff --git a/widgets/yawn/icons/DayClear.png b/icons/openweathermap/01d.png similarity index 100% rename from widgets/yawn/icons/DayClear.png rename to icons/openweathermap/01d.png diff --git a/widgets/yawn/icons/NightClear.png b/icons/openweathermap/01n.png similarity index 100% rename from widgets/yawn/icons/NightClear.png rename to icons/openweathermap/01n.png diff --git a/widgets/yawn/icons/DayPartlyCloudy.png b/icons/openweathermap/02d.png similarity index 100% rename from widgets/yawn/icons/DayPartlyCloudy.png rename to icons/openweathermap/02d.png diff --git a/widgets/yawn/icons/NightPartlyCloudy.png b/icons/openweathermap/02n.png similarity index 100% rename from widgets/yawn/icons/NightPartlyCloudy.png rename to icons/openweathermap/02n.png diff --git a/widgets/yawn/icons/DayMostlyCloudy.png b/icons/openweathermap/03d.png similarity index 100% rename from widgets/yawn/icons/DayMostlyCloudy.png rename to icons/openweathermap/03d.png diff --git a/widgets/yawn/icons/NightMostlyCloudy.png b/icons/openweathermap/03n.png similarity index 100% rename from widgets/yawn/icons/NightMostlyCloudy.png rename to icons/openweathermap/03n.png diff --git a/widgets/yawn/icons/Cloudy.png b/icons/openweathermap/04d.png similarity index 100% rename from widgets/yawn/icons/Cloudy.png rename to icons/openweathermap/04d.png diff --git a/icons/openweathermap/04n.png b/icons/openweathermap/04n.png new file mode 120000 index 0000000..b9a83df --- /dev/null +++ b/icons/openweathermap/04n.png @@ -0,0 +1 @@ +04d.png \ No newline at end of file diff --git a/widgets/yawn/icons/Rain.png b/icons/openweathermap/09d.png similarity index 100% rename from widgets/yawn/icons/Rain.png rename to icons/openweathermap/09d.png diff --git a/icons/openweathermap/09n.png b/icons/openweathermap/09n.png new file mode 120000 index 0000000..cca1f5d --- /dev/null +++ b/icons/openweathermap/09n.png @@ -0,0 +1 @@ +09d.png \ No newline at end of file diff --git a/widgets/yawn/icons/Showers.png b/icons/openweathermap/10d.png similarity index 100% rename from widgets/yawn/icons/Showers.png rename to icons/openweathermap/10d.png diff --git a/icons/openweathermap/10n.png b/icons/openweathermap/10n.png new file mode 120000 index 0000000..6e01227 --- /dev/null +++ b/icons/openweathermap/10n.png @@ -0,0 +1 @@ +10d.png \ No newline at end of file diff --git a/widgets/yawn/icons/RainThunder.png b/icons/openweathermap/11d.png similarity index 100% rename from widgets/yawn/icons/RainThunder.png rename to icons/openweathermap/11d.png diff --git a/icons/openweathermap/11n.png b/icons/openweathermap/11n.png new file mode 120000 index 0000000..b227917 --- /dev/null +++ b/icons/openweathermap/11n.png @@ -0,0 +1 @@ +11d.png \ No newline at end of file diff --git a/widgets/yawn/icons/HeavySnow.png b/icons/openweathermap/13d.png similarity index 100% rename from widgets/yawn/icons/HeavySnow.png rename to icons/openweathermap/13d.png diff --git a/icons/openweathermap/13n.png b/icons/openweathermap/13n.png new file mode 120000 index 0000000..94e5a52 --- /dev/null +++ b/icons/openweathermap/13n.png @@ -0,0 +1 @@ +13d.png \ No newline at end of file diff --git a/widgets/yawn/icons/Foggy.png b/icons/openweathermap/50d.png similarity index 100% rename from widgets/yawn/icons/Foggy.png rename to icons/openweathermap/50d.png diff --git a/icons/openweathermap/50n.png b/icons/openweathermap/50n.png new file mode 120000 index 0000000..e3ba961 --- /dev/null +++ b/icons/openweathermap/50n.png @@ -0,0 +1 @@ +50d.png \ No newline at end of file diff --git a/icons/openweathermap/README.md b/icons/openweathermap/README.md new file mode 100644 index 0000000..f908fbd --- /dev/null +++ b/icons/openweathermap/README.md @@ -0,0 +1,3 @@ +[Plain Weather Icons](http://merlinthered.deviantart.com/art/plain-weather-icons-157162192), created by [MerlinTheRed](http://merlinthered.deviantart.com/). + + diff --git a/widgets/yawn/icons/na.png b/icons/openweathermap/na.png similarity index 100% rename from widgets/yawn/icons/na.png rename to icons/openweathermap/na.png diff --git a/util/dkjson.lua b/util/dkjson.lua new file mode 100644 index 0000000..89aa2e1 --- /dev/null +++ b/util/dkjson.lua @@ -0,0 +1,713 @@ +-- Module options: +local always_try_using_lpeg = true +local register_global_module_table = false +local global_module_name = 'json' + +--[==[ + +David Kolf's JSON module for Lua 5.1/5.2 + +Version 2.5 + + +For the documentation see the corresponding readme.txt or visit +. + +You can contact the author by sending an e-mail to 'david' at the +domain 'dkolf.de'. + + +Copyright (C) 2010-2013 David Heiko Kolf + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--]==] + +-- global dependencies: +local pairs, type, tostring, tonumber, getmetatable, setmetatable, rawset = + pairs, type, tostring, tonumber, getmetatable, setmetatable, rawset +local error, require, pcall, select = error, require, pcall, select +local floor, huge = math.floor, math.huge +local strrep, gsub, strsub, strbyte, strchar, strfind, strlen, strformat = + string.rep, string.gsub, string.sub, string.byte, string.char, + string.find, string.len, string.format +local strmatch = string.match +local concat = table.concat + +local json = { version = "dkjson 2.5" } + +if register_global_module_table then + _G[global_module_name] = json +end + +local _ENV = nil -- blocking globals in Lua 5.2 + +pcall (function() + -- Enable access to blocked metatables. + -- Don't worry, this module doesn't change anything in them. + local debmeta = require "debug".getmetatable + if debmeta then getmetatable = debmeta end +end) + +json.null = setmetatable ({}, { + __tojson = function () return "null" end +}) + +local function isarray (tbl) + local max, n, arraylen = 0, 0, 0 + for k,v in pairs (tbl) do + if k == 'n' and type(v) == 'number' then + arraylen = v + if v > max then + max = v + end + else + if type(k) ~= 'number' or k < 1 or floor(k) ~= k then + return false + end + if k > max then + max = k + end + n = n + 1 + end + end + if max > 10 and max > arraylen and max > n * 2 then + return false -- don't create an array with too many holes + end + return true, max +end + +local escapecodes = { + ["\""] = "\\\"", ["\\"] = "\\\\", ["\b"] = "\\b", ["\f"] = "\\f", + ["\n"] = "\\n", ["\r"] = "\\r", ["\t"] = "\\t" +} + +local function escapeutf8 (uchar) + local value = escapecodes[uchar] + if value then + return value + end + local a, b, c, d = strbyte (uchar, 1, 4) + a, b, c, d = a or 0, b or 0, c or 0, d or 0 + if a <= 0x7f then + value = a + elseif 0xc0 <= a and a <= 0xdf and b >= 0x80 then + value = (a - 0xc0) * 0x40 + b - 0x80 + elseif 0xe0 <= a and a <= 0xef and b >= 0x80 and c >= 0x80 then + value = ((a - 0xe0) * 0x40 + b - 0x80) * 0x40 + c - 0x80 + elseif 0xf0 <= a and a <= 0xf7 and b >= 0x80 and c >= 0x80 and d >= 0x80 then + value = (((a - 0xf0) * 0x40 + b - 0x80) * 0x40 + c - 0x80) * 0x40 + d - 0x80 + else + return "" + end + if value <= 0xffff then + return strformat ("\\u%.4x", value) + elseif value <= 0x10ffff then + -- encode as UTF-16 surrogate pair + value = value - 0x10000 + local highsur, lowsur = 0xD800 + floor (value/0x400), 0xDC00 + (value % 0x400) + return strformat ("\\u%.4x\\u%.4x", highsur, lowsur) + else + return "" + end +end + +local function fsub (str, pattern, repl) + -- gsub always builds a new string in a buffer, even when no match + -- exists. First using find should be more efficient when most strings + -- don't contain the pattern. + if strfind (str, pattern) then + return gsub (str, pattern, repl) + else + return str + end +end + +local function quotestring (value) + -- based on the regexp "escapable" in https://github.com/douglascrockford/JSON-js + value = fsub (value, "[%z\1-\31\"\\\127]", escapeutf8) + if strfind (value, "[\194\216\220\225\226\239]") then + value = fsub (value, "\194[\128-\159\173]", escapeutf8) + value = fsub (value, "\216[\128-\132]", escapeutf8) + value = fsub (value, "\220\143", escapeutf8) + value = fsub (value, "\225\158[\180\181]", escapeutf8) + value = fsub (value, "\226\128[\140-\143\168-\175]", escapeutf8) + value = fsub (value, "\226\129[\160-\175]", escapeutf8) + value = fsub (value, "\239\187\191", escapeutf8) + value = fsub (value, "\239\191[\176-\191]", escapeutf8) + end + return "\"" .. value .. "\"" +end +json.quotestring = quotestring + +local function replace(str, o, n) + local i, j = strfind (str, o, 1, true) + if i then + return strsub(str, 1, i-1) .. n .. strsub(str, j+1, -1) + else + return str + end +end + +-- locale independent num2str and str2num functions +local decpoint, numfilter + +local function updatedecpoint () + decpoint = strmatch(tostring(0.5), "([^05+])") + -- build a filter that can be used to remove group separators + numfilter = "[^0-9%-%+eE" .. gsub(decpoint, "[%^%$%(%)%%%.%[%]%*%+%-%?]", "%%%0") .. "]+" +end + +updatedecpoint() + +local function num2str (num) + return replace(fsub(tostring(num), numfilter, ""), decpoint, ".") +end + +local function str2num (str) + local num = tonumber(replace(str, ".", decpoint)) + if not num then + updatedecpoint() + num = tonumber(replace(str, ".", decpoint)) + end + return num +end + +local function addnewline2 (level, buffer, buflen) + buffer[buflen+1] = "\n" + buffer[buflen+2] = strrep (" ", level) + buflen = buflen + 2 + return buflen +end + +function json.addnewline (state) + if state.indent then + state.bufferlen = addnewline2 (state.level or 0, + state.buffer, state.bufferlen or #(state.buffer)) + end +end + +local encode2 -- forward declaration + +local function addpair (key, value, prev, indent, level, buffer, buflen, tables, globalorder, state) + local kt = type (key) + if kt ~= 'string' and kt ~= 'number' then + return nil, "type '" .. kt .. "' is not supported as a key by JSON." + end + if prev then + buflen = buflen + 1 + buffer[buflen] = "," + end + if indent then + buflen = addnewline2 (level, buffer, buflen) + end + buffer[buflen+1] = quotestring (key) + buffer[buflen+2] = ":" + return encode2 (value, indent, level, buffer, buflen + 2, tables, globalorder, state) +end + +local function appendcustom(res, buffer, state) + local buflen = state.bufferlen + if type (res) == 'string' then + buflen = buflen + 1 + buffer[buflen] = res + end + return buflen +end + +local function exception(reason, value, state, buffer, buflen, defaultmessage) + defaultmessage = defaultmessage or reason + local handler = state.exception + if not handler then + return nil, defaultmessage + else + state.bufferlen = buflen + local ret, msg = handler (reason, value, state, defaultmessage) + if not ret then return nil, msg or defaultmessage end + return appendcustom(ret, buffer, state) + end +end + +function json.encodeexception(reason, value, state, defaultmessage) + return quotestring("<" .. defaultmessage .. ">") +end + +encode2 = function (value, indent, level, buffer, buflen, tables, globalorder, state) + local valtype = type (value) + local valmeta = getmetatable (value) + valmeta = type (valmeta) == 'table' and valmeta -- only tables + local valtojson = valmeta and valmeta.__tojson + if valtojson then + if tables[value] then + return exception('reference cycle', value, state, buffer, buflen) + end + tables[value] = true + state.bufferlen = buflen + local ret, msg = valtojson (value, state) + if not ret then return exception('custom encoder failed', value, state, buffer, buflen, msg) end + tables[value] = nil + buflen = appendcustom(ret, buffer, state) + elseif value == nil then + buflen = buflen + 1 + buffer[buflen] = "null" + elseif valtype == 'number' then + local s + if value ~= value or value >= huge or -value >= huge then + -- This is the behaviour of the original JSON implementation. + s = "null" + else + s = num2str (value) + end + buflen = buflen + 1 + buffer[buflen] = s + elseif valtype == 'boolean' then + buflen = buflen + 1 + buffer[buflen] = value and "true" or "false" + elseif valtype == 'string' then + buflen = buflen + 1 + buffer[buflen] = quotestring (value) + elseif valtype == 'table' then + if tables[value] then + return exception('reference cycle', value, state, buffer, buflen) + end + tables[value] = true + level = level + 1 + local isa, n = isarray (value) + if n == 0 and valmeta and valmeta.__jsontype == 'object' then + isa = false + end + local msg + if isa then -- JSON array + buflen = buflen + 1 + buffer[buflen] = "[" + for i = 1, n do + buflen, msg = encode2 (value[i], indent, level, buffer, buflen, tables, globalorder, state) + if not buflen then return nil, msg end + if i < n then + buflen = buflen + 1 + buffer[buflen] = "," + end + end + buflen = buflen + 1 + buffer[buflen] = "]" + else -- JSON object + local prev = false + buflen = buflen + 1 + buffer[buflen] = "{" + local order = valmeta and valmeta.__jsonorder or globalorder + if order then + local used = {} + n = #order + for i = 1, n do + local k = order[i] + local v = value[k] + if v then + used[k] = true + buflen, msg = addpair (k, v, prev, indent, level, buffer, buflen, tables, globalorder, state) + prev = true -- add a seperator before the next element + end + end + for k,v in pairs (value) do + if not used[k] then + buflen, msg = addpair (k, v, prev, indent, level, buffer, buflen, tables, globalorder, state) + if not buflen then return nil, msg end + prev = true -- add a seperator before the next element + end + end + else -- unordered + for k,v in pairs (value) do + buflen, msg = addpair (k, v, prev, indent, level, buffer, buflen, tables, globalorder, state) + if not buflen then return nil, msg end + prev = true -- add a seperator before the next element + end + end + if indent then + buflen = addnewline2 (level - 1, buffer, buflen) + end + buflen = buflen + 1 + buffer[buflen] = "}" + end + tables[value] = nil + else + return exception ('unsupported type', value, state, buffer, buflen, + "type '" .. valtype .. "' is not supported by JSON.") + end + return buflen +end + +function json.encode (value, state) + state = state or {} + local oldbuffer = state.buffer + local buffer = oldbuffer or {} + state.buffer = buffer + updatedecpoint() + local ret, msg = encode2 (value, state.indent, state.level or 0, + buffer, state.bufferlen or 0, state.tables or {}, state.keyorder, state) + if not ret then + error (msg, 2) + elseif oldbuffer == buffer then + state.bufferlen = ret + return true + else + state.bufferlen = nil + state.buffer = nil + return concat (buffer) + end +end + +local function loc (str, where) + local line, pos, linepos = 1, 1, 0 + while true do + pos = strfind (str, "\n", pos, true) + if pos and pos < where then + line = line + 1 + linepos = pos + pos = pos + 1 + else + break + end + end + return "line " .. line .. ", column " .. (where - linepos) +end + +local function unterminated (str, what, where) + return nil, strlen (str) + 1, "unterminated " .. what .. " at " .. loc (str, where) +end + +local function scanwhite (str, pos) + while true do + pos = strfind (str, "%S", pos) + if not pos then return nil end + local sub2 = strsub (str, pos, pos + 1) + if sub2 == "\239\187" and strsub (str, pos + 2, pos + 2) == "\191" then + -- UTF-8 Byte Order Mark + pos = pos + 3 + elseif sub2 == "//" then + pos = strfind (str, "[\n\r]", pos + 2) + if not pos then return nil end + elseif sub2 == "/*" then + pos = strfind (str, "*/", pos + 2) + if not pos then return nil end + pos = pos + 2 + else + return pos + end + end +end + +local escapechars = { + ["\""] = "\"", ["\\"] = "\\", ["/"] = "/", ["b"] = "\b", ["f"] = "\f", + ["n"] = "\n", ["r"] = "\r", ["t"] = "\t" +} + +local function unichar (value) + if value < 0 then + return nil + elseif value <= 0x007f then + return strchar (value) + elseif value <= 0x07ff then + return strchar (0xc0 + floor(value/0x40), + 0x80 + (floor(value) % 0x40)) + elseif value <= 0xffff then + return strchar (0xe0 + floor(value/0x1000), + 0x80 + (floor(value/0x40) % 0x40), + 0x80 + (floor(value) % 0x40)) + elseif value <= 0x10ffff then + return strchar (0xf0 + floor(value/0x40000), + 0x80 + (floor(value/0x1000) % 0x40), + 0x80 + (floor(value/0x40) % 0x40), + 0x80 + (floor(value) % 0x40)) + else + return nil + end +end + +local function scanstring (str, pos) + local lastpos = pos + 1 + local buffer, n = {}, 0 + while true do + local nextpos = strfind (str, "[\"\\]", lastpos) + if not nextpos then + return unterminated (str, "string", pos) + end + if nextpos > lastpos then + n = n + 1 + buffer[n] = strsub (str, lastpos, nextpos - 1) + end + if strsub (str, nextpos, nextpos) == "\"" then + lastpos = nextpos + 1 + break + else + local escchar = strsub (str, nextpos + 1, nextpos + 1) + local value + if escchar == "u" then + value = tonumber (strsub (str, nextpos + 2, nextpos + 5), 16) + if value then + local value2 + if 0xD800 <= value and value <= 0xDBff then + -- we have the high surrogate of UTF-16. Check if there is a + -- low surrogate escaped nearby to combine them. + if strsub (str, nextpos + 6, nextpos + 7) == "\\u" then + value2 = tonumber (strsub (str, nextpos + 8, nextpos + 11), 16) + if value2 and 0xDC00 <= value2 and value2 <= 0xDFFF then + value = (value - 0xD800) * 0x400 + (value2 - 0xDC00) + 0x10000 + else + value2 = nil -- in case it was out of range for a low surrogate + end + end + end + value = value and unichar (value) + if value then + if value2 then + lastpos = nextpos + 12 + else + lastpos = nextpos + 6 + end + end + end + end + if not value then + value = escapechars[escchar] or escchar + lastpos = nextpos + 2 + end + n = n + 1 + buffer[n] = value + end + end + if n == 1 then + return buffer[1], lastpos + elseif n > 1 then + return concat (buffer), lastpos + else + return "", lastpos + end +end + +local scanvalue -- forward declaration + +local function scantable (what, closechar, str, startpos, nullval, objectmeta, arraymeta) + local len = strlen (str) + local tbl, n = {}, 0 + local pos = startpos + 1 + if what == 'object' then + setmetatable (tbl, objectmeta) + else + setmetatable (tbl, arraymeta) + end + while true do + pos = scanwhite (str, pos) + if not pos then return unterminated (str, what, startpos) end + local char = strsub (str, pos, pos) + if char == closechar then + return tbl, pos + 1 + end + local val1, err + val1, pos, err = scanvalue (str, pos, nullval, objectmeta, arraymeta) + if err then return nil, pos, err end + pos = scanwhite (str, pos) + if not pos then return unterminated (str, what, startpos) end + char = strsub (str, pos, pos) + if char == ":" then + if val1 == nil then + return nil, pos, "cannot use nil as table index (at " .. loc (str, pos) .. ")" + end + pos = scanwhite (str, pos + 1) + if not pos then return unterminated (str, what, startpos) end + local val2 + val2, pos, err = scanvalue (str, pos, nullval, objectmeta, arraymeta) + if err then return nil, pos, err end + tbl[val1] = val2 + pos = scanwhite (str, pos) + if not pos then return unterminated (str, what, startpos) end + char = strsub (str, pos, pos) + else + n = n + 1 + tbl[n] = val1 + end + if char == "," then + pos = pos + 1 + end + end +end + +scanvalue = function (str, pos, nullval, objectmeta, arraymeta) + pos = pos or 1 + pos = scanwhite (str, pos) + if not pos then + return nil, strlen (str) + 1, "no valid JSON value (reached the end)" + end + local char = strsub (str, pos, pos) + if char == "{" then + return scantable ('object', "}", str, pos, nullval, objectmeta, arraymeta) + elseif char == "[" then + return scantable ('array', "]", str, pos, nullval, objectmeta, arraymeta) + elseif char == "\"" then + return scanstring (str, pos) + else + local pstart, pend = strfind (str, "^%-?[%d%.]+[eE]?[%+%-]?%d*", pos) + if pstart then + local number = str2num (strsub (str, pstart, pend)) + if number then + return number, pend + 1 + end + end + pstart, pend = strfind (str, "^%a%w*", pos) + if pstart then + local name = strsub (str, pstart, pend) + if name == "true" then + return true, pend + 1 + elseif name == "false" then + return false, pend + 1 + elseif name == "null" then + return nullval, pend + 1 + end + end + return nil, pos, "no valid JSON value at " .. loc (str, pos) + end +end + +local function optionalmetatables(...) + if select("#", ...) > 0 then + return ... + else + return {__jsontype = 'object'}, {__jsontype = 'array'} + end +end + +function json.decode (str, pos, nullval, ...) + local objectmeta, arraymeta = optionalmetatables(...) + return scanvalue (str, pos, nullval, objectmeta, arraymeta) +end + +function json.use_lpeg () + local g = require ("lpeg") + + if g.version() == "0.11" then + error "due to a bug in LPeg 0.11, it cannot be used for JSON matching" + end + + local pegmatch = g.match + local P, S, R = g.P, g.S, g.R + + local function ErrorCall (str, pos, msg, state) + if not state.msg then + state.msg = msg .. " at " .. loc (str, pos) + state.pos = pos + end + return false + end + + local function Err (msg) + return g.Cmt (g.Cc (msg) * g.Carg (2), ErrorCall) + end + + local SingleLineComment = P"//" * (1 - S"\n\r")^0 + local MultiLineComment = P"/*" * (1 - P"*/")^0 * P"*/" + local Space = (S" \n\r\t" + P"\239\187\191" + SingleLineComment + MultiLineComment)^0 + + local PlainChar = 1 - S"\"\\\n\r" + local EscapeSequence = (P"\\" * g.C (S"\"\\/bfnrt" + Err "unsupported escape sequence")) / escapechars + local HexDigit = R("09", "af", "AF") + local function UTF16Surrogate (match, pos, high, low) + high, low = tonumber (high, 16), tonumber (low, 16) + if 0xD800 <= high and high <= 0xDBff and 0xDC00 <= low and low <= 0xDFFF then + return true, unichar ((high - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000) + else + return false + end + end + local function UTF16BMP (hex) + return unichar (tonumber (hex, 16)) + end + local U16Sequence = (P"\\u" * g.C (HexDigit * HexDigit * HexDigit * HexDigit)) + local UnicodeEscape = g.Cmt (U16Sequence * U16Sequence, UTF16Surrogate) + U16Sequence/UTF16BMP + local Char = UnicodeEscape + EscapeSequence + PlainChar + local String = P"\"" * g.Cs (Char ^ 0) * (P"\"" + Err "unterminated string") + local Integer = P"-"^(-1) * (P"0" + (R"19" * R"09"^0)) + local Fractal = P"." * R"09"^0 + local Exponent = (S"eE") * (S"+-")^(-1) * R"09"^1 + local Number = (Integer * Fractal^(-1) * Exponent^(-1))/str2num + local Constant = P"true" * g.Cc (true) + P"false" * g.Cc (false) + P"null" * g.Carg (1) + local SimpleValue = Number + String + Constant + local ArrayContent, ObjectContent + + -- The functions parsearray and parseobject parse only a single value/pair + -- at a time and store them directly to avoid hitting the LPeg limits. + local function parsearray (str, pos, nullval, state) + local obj, cont + local npos + local t, nt = {}, 0 + repeat + obj, cont, npos = pegmatch (ArrayContent, str, pos, nullval, state) + if not npos then break end + pos = npos + nt = nt + 1 + t[nt] = obj + until cont == 'last' + return pos, setmetatable (t, state.arraymeta) + end + + local function parseobject (str, pos, nullval, state) + local obj, key, cont + local npos + local t = {} + repeat + key, obj, cont, npos = pegmatch (ObjectContent, str, pos, nullval, state) + if not npos then break end + pos = npos + t[key] = obj + until cont == 'last' + return pos, setmetatable (t, state.objectmeta) + end + + local Array = P"[" * g.Cmt (g.Carg(1) * g.Carg(2), parsearray) * Space * (P"]" + Err "']' expected") + local Object = P"{" * g.Cmt (g.Carg(1) * g.Carg(2), parseobject) * Space * (P"}" + Err "'}' expected") + local Value = Space * (Array + Object + SimpleValue) + local ExpectedValue = Value + Space * Err "value expected" + ArrayContent = Value * Space * (P"," * g.Cc'cont' + g.Cc'last') * g.Cp() + local Pair = g.Cg (Space * String * Space * (P":" + Err "colon expected") * ExpectedValue) + ObjectContent = Pair * Space * (P"," * g.Cc'cont' + g.Cc'last') * g.Cp() + local DecodeValue = ExpectedValue * g.Cp () + + function json.decode (str, pos, nullval, ...) + local state = {} + state.objectmeta, state.arraymeta = optionalmetatables(...) + local obj, retpos = pegmatch (DecodeValue, str, pos, nullval, state) + if state.msg then + return nil, state.pos, state.msg + else + return obj, retpos + end + end + + -- use this function only once: + json.use_lpeg = function () return json end + + json.using_lpeg = true + + return json -- so you can get the module using json = require "dkjson".use_lpeg() +end + +if always_try_using_lpeg then + pcall (json.use_lpeg) +end + +return json diff --git a/widgets/contrib/ccurr.lua b/widgets/contrib/ccurr.lua index f696a35..980e19b 100644 --- a/widgets/contrib/ccurr.lua +++ b/widgets/contrib/ccurr.lua @@ -7,9 +7,9 @@ --]] local newtimer = require("lain.helpers").newtimer +local json = require("lain.util").dkjson local wibox = require("wibox") -local json = require("dkjson") local string = { format = string.format } local tonumber = tonumber diff --git a/widgets/weather.lua b/widgets/weather.lua new file mode 100644 index 0000000..d8dfd3f --- /dev/null +++ b/widgets/weather.lua @@ -0,0 +1,125 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2015, Luke Bonham + +--]] + +local newtimer = require("lain.helpers").newtimer +local async = require("lain.asyncshell") +local json = require("lain.util").dkjson +local lain_icons = require("lain.helpers").icons_dir +local naughty = require("naughty") +local wibox = require("wibox") + +local math = { floor = math.floor } +local string = { format = string.format, + gsub = string.gsub } + +local setmetatable = setmetatable + +-- OpenWeatherMap +-- current weather and X-days forecast +-- lain.widgets.weather + +local function worker(args) + local weather = {} + local args = args or {} + local timeout = args.timeout or 900 -- 15 min + local timeout_forecast = args.timeout or 86400 -- 24 hrs + local current_call = "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s'" + local forecast_call = "curl -s 'http://api.openweathermap.org/data/2.5/forecast/daily?id=%s&units=%s&lang=%s&cnt=%s'" + local city_id = args.city_id + local units = args.units or "metric" + local lang = args.lang or "en" + local cnt = args.cnt or 7 + local date_cmd = args.date_cmd or "date -u -d @%d +'%%a %%d'" + local icons_path = args.icons_path or lain_icons .. "openweathermap/" + local w_notification_preset = args.w_notification_preset or {} + local settings = args.settings or function() end + + weather.widget = wibox.widget.textbox('') + weather.icon = wibox.widget.imagebox() + + function weather.show(t_out) + weather.hide() + weather.notification = naughty.notify({ + text = weather.notification_text, + icon = weather.icon_path, + timeout = t_out, + preset = w_notification_preset + }) + end + + function weather.hide() + if weather.notification ~= nil then + naughty.destroy(weather.notification) + weather.notification = nil + end + end + + function weather.attach(obj) + obj:connect_signal("mouse::enter", function() + weather.show(0) + end) + obj:connect_signal("mouse::leave", function() + weather.hide() + end) + end + + function weather.forecast_update() + local cmd = string.format(forecast_call, city_id, units, lang, cnt) + async.request(cmd, function(f) + j = f:read("*a") + f:close() + weather_now, pos, err = json.decode(j, 1, nil) + + if tonumber(weather_now["cod"]) == 200 then + weather.notification_text = '' + for i = 1, weather_now["cnt"] do + local f = assert(io.popen(string.format(date_cmd, weather_now["list"][i]["dt"]))) + day = string.gsub(f:read("a"), "\n", "") + f:close() + + tmin = math.floor(weather_now["list"][i]["temp"]["min"]) + tmax = math.floor(weather_now["list"][i]["temp"]["max"]) + desc = weather_now["list"][i]["weather"][1]["description"] + + weather.notification_text = weather.notification_text .. + string.format("%s: %s, %d - %d ", day, desc, tmin, tmax) + + if i < weather_now["cnt"] then + weather.notification_text = weather.notification_text .. "\n" + end + end + end + end) + end + + function weather.update() + local cmd = string.format(current_call, city_id, units, lang) + async.request(cmd, function(f) + j = f:read("*a") + f:close() + weather_now, pos, err = json.decode(j, 1, nil) + + if err then + weather.widget.set_text("N/A") + weather.icon:set_image(icons_path .. "na.png") + elseif tonumber(weather_now["cod"]) == 200 then + weather.icon_path = icons_path .. weather_now["weather"][1]["icon"] .. ".png" + weather.icon:set_image(weather.icon_path) + widget = weather.widget + settings() + end + end) + end + + newtimer("weather", timeout, weather.update) + newtimer("weather_forecast", timeout, weather.forecast_update) + + return setmetatable(weather, { __index = weather.widget }) +end + +return setmetatable({}, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/yawn/icons/BlowingSnow.png b/widgets/yawn/icons/BlowingSnow.png deleted file mode 100755 index 6223f8f7d2c1be89dbb216537dbfe0e97e4edd28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11454 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 diff --git a/widgets/yawn/icons/DayFair.png b/widgets/yawn/icons/DayFair.png deleted file mode 120000 index 8ee94d1..0000000 --- a/widgets/yawn/icons/DayFair.png +++ /dev/null @@ -1 +0,0 @@ -DayClear.png \ No newline at end of file diff --git a/widgets/yawn/icons/DayFairWindy.png b/widgets/yawn/icons/DayFairWindy.png deleted file mode 120000 index 8ee94d1..0000000 --- a/widgets/yawn/icons/DayFairWindy.png +++ /dev/null @@ -1 +0,0 @@ -DayClear.png \ No newline at end of file diff --git a/widgets/yawn/icons/Drizzle.png b/widgets/yawn/icons/Drizzle.png deleted file mode 120000 index df34463..0000000 --- a/widgets/yawn/icons/Drizzle.png +++ /dev/null @@ -1 +0,0 @@ -Rain.png \ No newline at end of file diff --git a/widgets/yawn/icons/Fog.png b/widgets/yawn/icons/Fog.png deleted file mode 120000 index b615645..0000000 --- a/widgets/yawn/icons/Fog.png +++ /dev/null @@ -1 +0,0 @@ -Foggy.png \ No newline at end of file diff --git a/widgets/yawn/icons/FreezingDrizzle.png b/widgets/yawn/icons/FreezingDrizzle.png deleted file mode 100755 index 6a661408b9638977477cb5ba28c918f4e9e766c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13166 zcmXY21z1&0v^|&Z?ru;*r8@-S5)vxiDczly5R@)K8tG8FLqPgRQbIZv1f)CP@ZLM$ zcfE?oIdf+AUVE*z#}DeN3bR8@PYw;RAclk>L$~Na_AU$NjaFmAjXzt0m;+<;7#;Xy;~b>TJp5gaCj>ds^C^?(VKOW*+V~PLABFPL8rp4&XWFHm3I6udTuK zW$bP2EE)cP2Ij6{a2roc@I(hN`or5iv9~d|babQc@&aDY$7GOD#8Ns>b#JU zwtnIl$xM>ck3!(m-k;$@?=_I{ZD1@c1%WL%9%F(C{dTV5`^KmSJc~ zkOzaf(S=^@MXhi=j)~hL#tIiB&4IQBQrGC{eg$Xgy9;p*6hFdhW+VPz8nQQRIfU!Nr)66Xkch)ohnc2PQ`f!N19R6E{vIp@jGTNOT~0xMLjvLr~5lf=RajH6LZ}R zETK;0ILy8O&`b#EXDgXHe;FAW!ymmas@s|Vs&8RpVuGEex>+=38xz7{J@nsyN7z_ccTEA; zXT!U@yBTR|X+jP5vx!+bImVbudHPi$EWuN;Ibo|&BQ7R{UmBWFPIX`4exwVOD_dAtyn(~v3iR|j4dSD%KQc8nHG9c<41Trxo^I3HO@C=d z5(umO9xMEMB@w30jG(pYOpBQ+ZoSVzg_>oha&0~KlAX&AT zZ}Fup!N#9I*%GcB1C4xEKYqOx%;3yTzwqv2MXnHqdnKS%z#*tG>PlLHWj_TrfWUM7 z`xB!Q8OlmcO*Ne=)0Fi)-4>WLd3v#INW2xFlao_#J)YM%U18{lS%zth=`PQ}3PU71 zS2V@ju3D!uB|_&Bgxf!$=y5gT>-QI;Z7QFhGVa#T82R-N4|8wqjccPTCO*ce6TcWt zQj=`%wXN5Z79h?I`2>|B8<4JqIkWO&=F(-cQ0@d{zFfvd9z&9_-bl(f!iU0BjeJXg ze$lNZv#ZyuMC)9%d{}!mW`)?y9I*KKQ$78f$ULa=k0JFw3}>}4L2Zqh0hUf=qJ%HR z$m;S^JXZ;%am2<>Pr`en$j>RnJa>2UIH;&F&P8Pc1Miv{Wy9ONSHHhQDzSoCFyVd( zw!6cIi8n|NJ+)XP7%Dc-m7fqNm4>L9gm6s68-y&K*UVctZ4P(sYOC)yZGNfAfv>JVWOaOP>+He*G$D zdztRO_ESwt0$<>QSq)N1v2d2;;TiGjc~3}-gp7O(Lu~qF*Us8culL8@H~3#39cz`7 z;!CVo6rq-nMz+g_qz9Kg#j(psvc^!?gyF0u<@Brl@2;(_xt1^zjX-#RviWUZ?L0H@V?jkn_wsae!?v2Tsn&^fb9EiDu(G04R8*Wb z7tC;BCO#Kcw;+mx|Ch`EeE)+6+!FfufljLvT_^XJ<*G5ZZ+(1xXpFX#`g7xp%w%Jfro2apPHOZqV?uY z^5^Au@80>89J_*R?DRi?fMCOJe7#Y>vZ-a$3?8@5ry2)do@9!+{b_D(MHejC>^g1> z9LtqC_S{=Y!x4BzH0saPj@&jW@OxNB?c=UJD{{$?y>WSoM`wqf5qQvvhK5Fz-TrovDR$+m!Xn~(Q*OfQB7SBN{~ z&JT>|Mn-gY8%ck4xvJw725_Lca;YyPribd+P0G zM*MtzuUu)g?Y?wd@LpbDU(YDd%#fxFIW0{M4ec2C`ugIHy$}{@v6M>W(H z41q@QSDzHVxFX4?<>*Q(C@46quCB&!o?vA8V$^&ra>zQMxQahq<4{YB`d= z>wPgqP?b@u=T{U$dZ-{L=a2L|o@{aI{$esF+svl>A^J@V<9c^r$PR<7DK2EG4* zOb!egP322T2}fjXY#=Hmm%Z5wCUUP&fbufn(1uGm@aBR%Up__;TPdFaHCpGx<2pAz zxUNSHrVxP!OMK>;1)=e?Mkju%7*4G(6w}q_{olZ~T9Vx&cL%~z$z3#yj&N{s(Gblq zx5unH88gJhe!_&wxQU?i-Fk1~Ee5ndD-_toaSQwJ@!XX+yXf%@)=Lgo8^`}@n3i*MC# zsvtz~(2#P&to;OdchBDb{?Wb3(w__65%~1hT+Ed`FY?E|RkOuK&@wk^4$K%vG`cjO z{(U)SMKd_a8L|2VN&kF|*Y5<%%>i*I3l=)Pc*?eYhj&g<*yqS1Wy-dGV{=pcWjepj zyez&%-4k~9;$N!LgJ#vA4zEOFf7V%#Gg0iOwSCoZ#M=;7jaW9X*BknrE@J^=Jq=)W zl#PweWl26Bt*Cp2LL6Pdc8ojnbANyT%HKn&Z)IX)Ui2ZuA0dpH-%=imVDMh2wV*L^ zaz=G)LN>SS6(8^*cTkT7?SDOG6czOq?{~RbB%p^@#ueyaUfdjy2K_fQREvZ-{Z(z= zco?q3mEw9tOVj_k54qn(@F++zkp@To)hi@010ld}5>r#jg={BF0==TVWMu$-YlS+| zN+|6wZXiW>mTg@-27+S-QKc0m;wl!X0*NL+==jg@>-k2fdlKoz6LD-LBqY7P#a6Fz zujPRAoXg|Q`x&d+M@?5fABZDDLPJ|^>hrATR76g+gT!RR&V6wdXjJ#eb7R?#3Usp z8J|5nY~25Lz4zF}%<=B#Qemdj`2OS?eJ`G_IenChMs=^XQR_HijYtvdiVv##Lu70l|%mWLn++oCx3sU8wK5-mIK@{9?cMP z(pFW)v*n}X_--h@K&{S|ur5vM@%?pkypt0S9^Tm;nD$#oN5|ov#aCF#$;lfIzp6}c zYb=LUrH9=g?O}>w31#>&pF5JN5G7~R+?JAr86z>93Pn`*3R8e2M5mg zU{*YnJEwcN3)$CLAdkcke(;U9J}c%WMsE7bg|)_yo#KLm9u{`?$`E&I9|bU!4<97?-j2}Bw)q@;pHu*>(T~8Rz1jqn@;ulLfs9Z$R!-sin-w1) zpEt8ZYlnAtu^zWxuJ!fG7L=2qU-N}hz9(B5+1c6mo70HYloTW1)pz7pw37Z8Y?Du6 z*+}~vrq1e%j|wgn?uzCcmjlI$HOsXWV}hMkRY&$83I!1v*>u~>3_%wFcy-s2k&%IO zO)l$+q?}p?5EimZmT3L()_DF~KOdjoiR@HM-ETmIjDu2R^)5WT;osP2+0e~L;v7H@ z+`E~Xt+`oRT3SII=$jG++ zYKK&*JcgnLPRrl!t+`mDqN3aYgjU_H$4N=zj)Y^;;U>vPQ;f5Si1_pkX9xvR0S%}P zK_Hf>i0J4fO%_``=s`IzPVMsHqQ{`~nEfZI*U`#@FW}GjKnK7~J<3L{v#$ zym0)?q8NM4qWH=iFNDEcPF|kP{g5cf?uE}d1-Ne%l4z4D^C0fj`Ha2nf!{ky575u2D|Ae-!9C` zSrj#6f(=wuR5&0Ewxq!-!14OEzUWl*3k(0kCR8Ut5em6Tv74z_l*38N%F0q+>pO1i zx@!wx7yh@_8?|f#-qn8&Ka!61jLE3NK-d7ZD%{^4f~|1ncj8%1}NuX^^muCDG! zV5HETODuJ;g(GFUOxXkec^b8OA7=EesN>_~OUV$_ZF#x4JVOMa9E&^E>2O)1f$2p&u?z02L^wmC8npcs2%VnXYUrsl_AtO)Z^U{8GU9LzmEI5=osWRP;IgsBJX+M3Ja@ zCO7X#hS2`l#$b|hqGj67az_v+G!{)K(ZW1>JlEHEDZ{N*UhfXr2{{7e&g4Zk4?@htCaTwL58&@dmN+(AH?1e}%(vV~pN>HzVs1KNI{L7Oc6#`qm@tPFvtBm(U^ z99sCxT0sr<7!U*ugR&okgCcaaw2P|6KT-M7Ch|D8LAFv=%X$m`t+Z1`F-C`@8F*zkmPoNdg^y2xuh5aQb%#j4hDn<{(_6 zPQa$j?3`vl2-weA1D&?@k>aCv!0wcI%+2lK3@Ac#M1%r@>)s<;oXnuz*JFr1$Nz|v z!%N1k1{J>M(vu*L4#j`fDtFi%$?9;XNhJiJ&mEbk5Zc&@2UI(HPSYa}j;4ArA~wYE zAk@nMhOI(S2*XyL-dBC|)x)gdbM%R7Si z&K?+mw-*<`#m?TW$DJd>y12MNX>M*Nm3#35_3m~*h@LBQ4Y?J0@D>pg67qUf;@n^x zB(hSMj}Vb-Z$i>1bafsqR`T~_XZKUmr+uS)fGXVh0i7A{?d#iMvm1UFr2gE;=koNy zFERk6JW#zTBw_G#q(?-ZW}!D@8ng_{JQE?uh2ER@McbSMO9TJp?99=UpDM$;UXS>W z4yb2Ks1~{nhM;5>fQ7KF*9+Au7qI513gw7I(;$h7vDu$Q zXHk6ogq!>J7HAT5G9H5q51`j6h4*7)-|DTS<>EksJWNb^Jk)Yy6u}F>q-7UIfy~{B zkd^Syw6j&3EpnhwYm6Z)RF~;k!C2_`nv{|)| zV<1mMB%?Li=KiynnO{KsSR^;{UVUd2iiYcZ85r|aH>D7m2w(j!f2Ve!Z7z!2w0ex& zv+CU^+>10%vph~duTBa5IgO(Cp7|Rx<=`Z!RI!HNZ*Fc7HTv)Mm=y~K2U%QU%*SGq zKo+%Ak&w98>(*Ljp~y59XDE`BklfUOFgsuJ+iwq8`68y9A1U~K;5*fajrzy`@qPT| zq{Y|~B<)AvJc@YDGG>$0smB6qw#0cUFy>j!u#@+7g)lTUbn(^e*Eu-&`1G>_(G1Hi z9y|RHIPnwwCcaX|lOhfA-1zccupK$_`G;2SI)*YJW@bf1L@4!vO^}k3;z^p>%i27S z6w^fGl2ybs7O+)9Wr}*WRq*d*HMtI1NxqZ)#5&CDdp!@1Gp#?R=|@FI^8DG@$h=;@ze{Zf7LGA6^05#V%!(3TX*ZQR$CV5|Qj$x|tqCDCr} zE)qaj0c z5^L>hv@|cw?jt_mDl*J&-$eV*kZuDa1oJ_TGNOfkX8%tf5UGS*ny)2znfi*_;XmY_ z%k`v+CS`EfHW)V|A^3rhloCb$B>P2MD9J5X_vrWtNH7T!BBG;6uAxqs%o!kd^pFF( zQ18U2oCDWmgq9|)`Ttq!h6Bfw!$kSXtH)!3)5pqA8JfAw%S(q`$M1lTU)VhP1w@Y859Y zj>tR((dJ-pze`=iCC2m-7>H45h@msT!%bR4>GGX_jmxShCnqY;11wXMLuljX4CEHj zOr9HlV_xZjNOp4AU?hEWA*k5lw*2WS$#OU;+483eOi9R_BR&6+Gbsr^XPt0D&UqY1 zz|!_nCg~-EOm==%=Rf1)tEKQGS05=o8wQ4IlAOkyIzootocE3_4+?M*!7A~%7vGEJZJ$4f~-hOcqhv@rh`U}=^aW)%z&n$^QT7u z4{EX;N|9LK+gqBCC6}@oh>r#AT;YRff`faaE3oBS07p?{osW2;5lZz4!B>z}W>96) z#SkM;964iIJ4=wypr~uN%)hZ|Zcq=i4rjoJZa^KNCw-C7vXa=8D(_!IY;%=NGFw35 zMdbss=>QiKGc9bLh=yh%I~ch<1_{Cd;vz08kK%d5u&VF`Y0f@n{{~Pb$>v`-1;T=cGC7(7LL6+DSK@sxRg8w|;LMh+M50Kq@Z09)=P#c6 z2C&N;iBcYPEi1aQqCy08J{yE;yHfuAj5IplhfwGF-l7--1A|GyfA0$kW0T=D(7~wW zwS6W7#$;v0FMC0n9KAw)AYHuWrN%MTroURZmK!6xpl*MMSO!1|icFyNyMCjkWrVt! zpv=cYyA%e2v;?QkofIg`})l`OLEkj}h^um4pto?6`d@iz~VPN5TiIqfX(~5)v$2lWPV3S5WbdzHed<_=e29Zc$n-%HJ$2Csd#kapRiBTWEpnW z$`!CkD}l;?TXI4;SioQEp{-7iiFm({F-s@r$t5KwcFmoM3HT9ceW=(1<<2^0zDq-J zbzj|2m(k~vDO4t#KVF9{iaaLT$(V(MCVPC{%>+S&R}W_a{InE|TRpk4?Or?h>Z3vW zE-r_GdWPgrjBZFW4b{nhfleSFrHapOew?II@d^GEhvwfBt~nPp35CBg_H9 zecJA_-e(8gKjS8#>Lg?3<^`A4{*o&b=t7L zO0}$mn9DcEqwcnV?8^*MMpx` zzlmDX_n8x*=L0$Dda=R5Oda_=S2$rnJ|RU4KuxYpX!`ZV1&-y4e5B+D*SO~bfT23z zVPU1eTykIQ`7nx*_>Vzc+#oe8%TQBGOP);w4yX@lW!uqzsnYbT-iGmsi4&_}Oa4RI zluQDPrIVhRScBr1&AiurjaH|}-3V5y0I$Kz5p8!*-5_m!*dYz3mYftKwdvoTf4lLeGHD424v?y5^!eX& ztLxJsHlFg&4T`(X;m{#m3m)}kazuutrfMT~zb#(<{tAYNc>uZ&A5{Qj8V5@wDUhZ@ z2i#~Lan}tv<8R8IizA@Z`zT}jK7ZA#7e#`|yJnkYA7kVkXt>{%XyohF+x)b8*6(r! zYI*3bAKFG6DuRzM$(9g80O#1q2}B>j68%QUC15Q*L1D#(+vqzzQYRN8U>6j*vL+TN zBRc|JW?IlM6mmFGPJGkniE@&9OQIFIwmVN`e ze>cF3ID#FWp885Cnda*r@rwhW>-DQwMkFuB3IBlN^dWeT@`F_z2E@R^#>TTDJc2w$ zPC!6_yglEZc&ou)V#o1m*LyBXWNl%v9SNfRha(>f1iW$Zh{_v}kg2G*qzR*s)(Ai^ zCnwqrAA+c2*l28d-PGrG@;;(Nft?80aC>`u#OlAN6gb>6Hibz|)h4X~jGZV1*?G-|PnB8DWsB8FhQa zpJF$t6Q5czTGSk4#4Kgn2oJgd2QKQ4&d%rx*1E==nXZ2_-W98)O$?hnb!Xi%+o0vA znEVKHwy+K(horra2H7*doz2+=$P8jYpDF-NFBJw&@C#sE<4pbn{!IX|>w`#>Td1w~ zvGMV})RdI2cqJv5P?Toi^|*(JhcEpD0_e>NREL$cpRR)J5Pwmm@@^h8eA~59%?DaB zGczmVwP$J@J=~;1F&M^R3aWiSDqu4qHxFDzwa1*CL1+l(mCV7&zX7&8D*JIJM=FMzB1%fbDfXdM#AP8kl(91|rXhhw&ycw9{Z1+D; z{RC}mh9^%d6?6n~e(O&A0hdcYmS$GIa;AT5yOuqhpK8+5h9c@9QZWOt^cgvg=-xzH z5oaqTg^=Q2vxJ9^2DTqQ!KUh2FSS$KvpH*iyd+CX&}K7(RutM)*F0`1j}9VATyj(qTOAc8yR=fwyhb@l#1Qk36YNa|G4O>YPwX$m1ngXnSV z-4{P-@}A_Bd5A(#NiQAf5v%V8Pu-yzaUy@T!8K71fLLI76JU za3r@6Vwq^#)20Xk&5#SZ*!6`0Gy+MkS!Z#7Wnw2RDW98*L&IqK_2unONSN3ef*u?{ z>uMcWj_Qce2Vv>sEE5SqH^3RE20k>aQ3O!KD$2_Gxb|XUzlVlEpc<*MWdr7E6>vN( zR37}zOCwYfs;>{m@M$9yCI(37{%>w-865P(Ovk7VTKORF@BZaws>l-P8D4V9sxW;B zv)YcAf%6iAjvySsOH{6XZnbu=o(!ObmkvLAHsCporB2N#EcVgW|z@$oS|wXpLF zPL}FSk8M3!;Pt;oWzd$aB;HyzwM(p~b&v$n@efo;+=oLCNk9#L0FwrFc6b|{y!eQ; zUcM~Xeu}1T56xM-K7D?Fcbf!tN;AhABt;s||M;kKIV#fzI(=TDUD7Yd`xXr
  • S236D+`KjrhMq5Ij+iT7#d>q&))}ssJ4g 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 SkrO_Njs%wG47yPXH|NC%vv9yM4-Q193JUov7 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 diff --git a/widgets/yawn/icons/Mist.png b/widgets/yawn/icons/Mist.png deleted file mode 120000 index b615645..0000000 --- a/widgets/yawn/icons/Mist.png +++ /dev/null @@ -1 +0,0 @@ -Foggy.png \ No newline at end of file diff --git a/widgets/yawn/icons/MixedRainAndHail.png b/widgets/yawn/icons/MixedRainAndHail.png deleted file mode 100755 index 758b01e48eaa6ad27d8b0d692e285a92e90a4ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9060 zcmY**!S$Rv~+`%ga{JS-AJi`G$JV-OD+uy21rOqcS(15KGLxWNT+lo-S7B) z??3OJGdqXbIWsr+eOZ+yCqEr!5z$1R#^)R z{P<#h2m$}bc2d%J1<#-Qw?SmtQar(fRBj4-ZkljQHxE-63&6v}gUiOz&eh!1$$|^+ zVwG|rP7R(!^6w-WcQ)#ooqI%i7|t#fP7Zj6UGcs{j8Q?k?sQfVG>OlPEX0 z!~Z+W&Dz4n;se(Q3xtiSqnoLV8<#oUfg9X&JK3AsIC6SenEpG3)5aX`=*sy*K}~8U82)zz<}TpHZ4egV9UZ`{|NC#a?QP6099=D3xy`&d9nCpiO}Y8Fc(@l~ z)awAi04U4LXnCgYzxVMZ)sB}s+ww?xqZBNz1ZC#vPs|j5(x zsJo;4(`^{#^@ZP=wp5Yhg3st-y6Zt>B=N8DamMfziq+Z?Y04>bQ|SB}7RfTJVj>_U zvSybCVTz59$9egXpP$dM5SI|3g*7F|%@CD27sm4mL zdmped9xByQR1alxiH{82L?Dk~k)MZ1L=XLcF7q8qNp;CLgmN(fibvvExc_BcdzuBkNHHv=}wx%@m^p+PKeVu_G3Ah=7lsB z2INtti2@L1K#(NzDz$saw`XeLl_;?*OzsJLxw?i1qg$P%Bfpyhb5#D0_DY47Z^c6x z8y>lRn9jQfp$^6xqo;%y#T!r+Rn^Za{iJTw*!GYT5nSg; z60o+p1IIDCcQy?-8ONt8^Wgpb7R_WulasdC@4WgOOil9YLk0v5gP9{V`_fnP=*kxd zxFl5wjE|4c!=n+5^*@``oy;Wj=BvSO`+UV!m#%%8SdFDbQj;@e;zr=eHbuiInhOc} zJv!_A+*iAxs6%^>OD-iMffhg5VzI^R?qvkE00Rrlj{tjn`!6&02C4br9c!35R8 zfq`=}a&rIUo#OKNnwlDZxfE22fmC&{3h8;r8#4y=*~q5DrbwkPL4e++-hz2&b@28| zF#SQT+x9Qx^ZmICI{o;4T23qg+56{eduuFbZeutlAz-a9n!P~+%>+#P#oKyZ@y!rUx@+gMUULgG$RgYpGHGHz032VB)5f7Wtd(kfdKTYy6r^L-rSWl!5Ip^RQqolc zvvT|hMPTG$0(Zj3`g*DVdYmqPmo~H@SOqqz*zt`~`W??#&Zo$9SfK2$7Ly5gnIJ?j zgq@w;vy>j!So?$=sDL6lSy)(HdcV=OzkdDt&Ps-`$(J{D*wU4NUeedF-T%&izRE&X zWb3mMHYH|$!2$cEU1uxBqF(Tdw5~_*6Hz8uQFE{Nb;)c!KD}hi=JnaG@wd=W72Vha zrbY&=zug2*7pm z;po6zfkw{iqTj`Wz?*!&XIfN;Son0}ml_DfISqgU3|u=zKgXgeeJ*=(r1xn@x8e=! zxq#;%(gjN#(IQ9zl3)r}Vo+;a*}bB)GZL?s74UE$d3RPG;L!GPfAfHAz5lcBt&wmF z3qXTuf=E;{sg)3xN%vahV%C|5g^ZM>%oT>r6~Nv!NP#r~qjbCRELy?<>Y5LlIPP;ICB3=T zrSqG|=I0G>hWJLG-(LQSRO{5{>o~`l*6E9x4|t=jTxnrpq3|s92>?t?P6`BEZ|76U z%w5kovK}B-51tC)k4@%vL;yXmD55Vz}#V&rRLSW4@OB zt^-UR9R%*&ygX4C7ndF@@aD@-!o)$Zr#4Rn;^O1||E4V6ZrrV|uBv86DpfgSovGJi zPQB0~Qjv{7p+gw`N-r@2s4Q?Ew!g4eYRh zAMHn7xM=xm8Intu)$Y@TKCO#iz=1pdAyE@QKKP7Fu>$~#ER{ByLl9}g5mQCwED(`D zia&?wDSq8QpMi83sjDCDIn*y80u*^C(}dl&)W_hvTqt1a*B7n`nX7;w#!{XpH?} za9mL!^dfo{u?IHbClence<&fNk!@6Pa@Wr~e-1#8gqYY+P2z0gd1~b@Q4m9jva)jC zJ9z6^yj6xDqU@)cGvcQ!vvL(4HUHLTL`1|*`}I!oUF| zX8gGpro?0QUZi%nsq`24GbVlEZw5kzz1Bi zdmp>^`lwEf_yX)oPik5Ls(1>wC;7+9u#ZP2bm9%>mY>Rq{1FJmA%&6WN}D2`*BVjr zq<7diM^jKXb+2rZQBir_R*yxJ+8VkXEguT(g)n_%!w7$t3lhC& zCbZsn65nRe&%nUo)cF2yf<;nN5=rx{^R?oaVawvhDvLqq%sbAUr127ZN)i)Od3H5YWdyWEF{Xy%XV_U=p#V3>H}AB z6(pSnDk`cM{r&yUV1Z45pXFoEiJZ2gq9X4p5y0?JBleaNvi{6t;Z^}s zhC@xTUnTetn*z}=&;P-CGkF+G69>n-rJS;I|9x(5t|SPz1urlaG<+u~CoQZ-)9-k> zx#5~JGM(rsH9w)`tD!ea8d}h!AaPs!r8>Wx^L4O3&1E&Vcx2HOGz>;kMXFEIJQlqU zLCC+Qo5e^zG9jV!KEEJ#T8c?UC8eaK_-&?njO>hbeI_E6PZ&H?16MT}Rc_oK>M&QA zW_y?Be)&j|6y5rSOFL2%?{pgIko?dWb=lI=;#)oQcv9gr7L&X%*ib$F-=CJBdy1c- z1Xn|*WURlW9p56}w@V2LdAO7twZ24nn08r9fmOoyGLp_=ros7-P-X;G#W+f!d$0)A zsM$=xZPe0dRyl9j%sSuU)Vy#0_8hHb>IL@J=-+-E%(M zGbl0n0))gQBtBozB!yVLFAn^c`l6YpD9Fg}0Df#=lnU^uJpz|;#h@M`G6!;AdxZr=-BC7qeQ15ebKu@Y*6UgJJ zB%C(V237V%vM2=wR>Lf-DMxGxo1r&N5E>eKgD^Vkc zxWdVCW#i&9`Zqg&oZOWXQ)xd@d|5_Ezm%G8^|>e<7#L_jJ6w`t5|`M!R&a3GA5#b; zF9oYq`U3F!-^CPEYz1YVF!EigQ$X?f#9|=YVPPdoG zgVKke@{$O}?&?TXy2rtLa+Qz2P>ttAn z!XG5~d}(f9LCRd<4;lb-{3%KdAgka@Z6`EBjriF|yBy3n z27x5cwEzN-GU^Sw9dzViD|XmQ7rW4^WmKv*bn+4K7ZjJo^ger)H=1wX9tfliOFVKd zVQbrUu!tVrw8KB!n0z0>p~*p+HC1jLKzT}Iu6e#B#g~}>_t=FA(Zf?4NoUl< z3_-?5N3T$edpenc+}`qhki2{fcX)Vs0HoU@P~RCkFLwm)Od0t&y!7_Ic7L&OyEjvP zlm9B|FQ^zle)=+}j1TjOglwiv_STwPrq-oIbCQcd8Z6?0ydS2i_WiT;R5P$d>~ zT-Rf@-@XLH+TPyo+Q^y4kY>;=QBp5t0p>+>hQig`X5^n5U; z{{u0LGVyEH@7BCYFbz@#{dfiCm`^)9wxeKg*hbPz87)jtD{+!_!<9`(J&k2uiVYrE zHDvaPWuuX^HArG{pWpk!W|ewFAa(y<1(9{E6N@8Oo%H8B9i2Lhv22A0ZDZpltXm3Y zz!jg(H}j5Rc(#S%L9_kOWao3`8S;@L@A)0~LnYo>mPfb*+%&ybi**GPU7D|0Nr1kS zjp0FRA; zU>)Z)aPsvB$4b4m+uPe8?Uz5fr-vDzH7gV0qAgGb8C2}mO<ez#__q#UrZu?hcErxIHn$)!Aodg4uEXR|MV2Gpj?oR5gTw*?ijX?M5tyQ|0C8z)?hs$UQVJqY&I_Usoro~{q#UmQQ zJti4K&=C<66UT0CZ9P+se||+1=gg`m3G!>D1C=bCG}@Nu5$nB2RFft`oJ0@$OPZ0Yl31p7(muCNop;53nNJ?~eLqMS= z1R`D)^fIWEJ-LXYU5X#n3Lvp7wqXNxeSLippyKm0Or5b3L{>T)09;*NRfD8X&MzR~ zr~m$aE1!_iMF6PMs7209#@2#w0L!DyxM{S27 z19AfQxFky4@m_S2-zER6u^C@|`Z_t5d(b7>ySjVjQUq8d92F>1Qn_Re`}u_1u;GXx zhM9#!xBhc0+UzTIH4f^c1907DbF#DjnXrO}%_>hrzkc<)yl8*8TeBI@lQ7iO%;B2t zv=FMfc^ zb<{kCf?6VvX%@4x&0h7&&KoxI&J%AyIN1gYT>Ydler#1g7f_bxAeh3(Nsfyji~d)i zf0S0l4nux!VY>M=)uYcASlLCo)PoX06N1!Nx`e-EFs*J*oH{A}yFQoCj7R zdI8-YHa0ebM=zx}u$}llm#$iNv^IRMZeKdn=c7#K*RV?V0AsRt%waajbfJ_i7Xu^K38n5TFsoa4x z?1J~}!>)|PcV@jh`x(#b8D9=ZAcncJO9+Rw@ang(4(SiugOeK$AU)IU0p~n^#FQUdl|V|Q6zK&1~BC^-++ zm{`Mi?`{&x+wZ-*i?oa1PF_QxBuHDTP_|G69fZrMrQm!s0)thLGKr?{t#9VO zzRA0Y!17=a%tOIVQAU-J-KmT2<;aiO>qEYzSAK<}Hj_YS57)H!IRvTq{{4QMgwMI9 zTcid&=rtw~p4MR^0N5q80w`HB9gWzYuC6Y#%>4>)sT3KVzL#YG5koSEQ!K}!t77D= z=Up>Pl^9sL*thaqbM=QgEf|c-Z!6wpBnysE+`KwBcr|ZwQVu~ty-KD3L?^_>-Eptq zYHMlP&sSTGDxi8NpG6>(ipk#!tu{C=G}!=6%1=9mwE_p^YME8y{?;Ht32$3FWAAbF z*etSF4*k1lCQKzs!!|YJHIp@^JDRh_6?TQ$&rpfDxHvdR=&x+@nyjpqu#2UD2W=FW zOqcoY#B&<5=|)}%GWGj+SC7$j3Ehz-zNhG?IiEW{CmO`}JVHZ&K#no)f`2|20q|&c z!NG<(21AEh>F+2u2eO6>IR(x_w~wrlQJ6`vyp3OjG2U>xgxKcSr|Fjr0s?1(ZG%AL_74SX&seWC;{BmgC)GzZ$!O6Fbh-X3<@16j21-D8!Ud3XTntYqakPaVSmOd<1TK- z{-C^Q{C5TWI;Q$Pklt+K#+gFEb2;)mvRzX0_NZIJsJuQIi|4%o*xY%*S?0+zsCdHW zUUV1123|H8lu-P^eEXfP0A-iy<*v0N00U(|$YkrzY+MCpu z3=osi)KUt#jg8GPXcZHxnL&?L8%#j&e-8$&XY%h&{%TgD8yQug{5pvIE25@#Lx|u6 z=p!B~Vn<)zK2yu!EOD&tKN*#h8eex=7?y1L@#BXrsJrNqZDi`R@=ra_^r|g~Raw7p zH^;;f6R^{lKZ!6X1b{Bk`>ER5+6p!;9B6{BiJ&J=5ENH@gU&C z4KjYdL_db~lb7fYo^%4Z=aMB|Kfshqf-BSvwxV}zz>qE;Xpa5XuIUbRsk-c;P_6_! z9>Dj@-{B1kJIGoeS`-Au{v<#m7z9(i0MT3s=vdrQ$A{e|W9&((TcsoQdnvic&3t6- zlLX$BdmDl4y}Gxz$EJm!^K$B0R3HNyu{xbq=I@cgh7sHhQTLtF80Mc&8&v8GPX%aQ zdSbl6HMIJ|tn8QMd_5<_;cEmB-VF>3SmLdeVi*B<#;#D&nB z*2q>;MoFn70#^4Orlq>(Ufpot{Vx~Hmr*+7r?jK8zp((KZou(wBbu!$Y_Nltk;?`F z42P+TPbTA+dO=yta{ApIg`xc(@J zT|hwK2ccnr0be|i>&B3AX!h2VUvUQG-!q5Xs_>xsuh)|#XcVsWQp%ZZTwJR57kv(g zNnng`HAq2wgeJp5Q#;g9CidY%pE3fSQiNRmhNk2ihPtru%Vtv%$5RL0Gex-WUPY-c z6nMtTIXnphU$4kLEX8Voas4M*fsXYW&5Gza7Co>Ay3oJQ`tbohi3RsV50{MqKcm>E zZ`QzG$I3wWH)3E|Yd(!wEmgRZPgK;Kt_}6)__1NNC7voE?nQcmBM%V%3tl6}b4*Uk z7JJXxrd@E_@Al!nFBKKl3JMFa=2W>`YbxvN;vJ$JQWInC?+bnhs2Up1+Y3epF*Ibp z<||AN9Wc)~Er1BqD4K}DKk#{t36fFYG+GWPm)n9pQpq{FduDXCkpjO*6Q-dJl8Iyj z2O{2^#m`>HT8>M>b(?>Ac?kwT;w<3tVUF^as^8mgRq2g5MoXzh-0feJ!N7rEgVZNe zyvX3ultZ6E8;%^5aJkTrcL$^98j7m-r?2@EMe$tkhxU|4qhZ;^moHz!0`5;TF6cyDax2e_*pq+U z=Orm!2TR?qxB}B3%gnW<=F0OXcpg0#juL}|dh%HK$efZ|DJIuPwP|kO9|x$*{tIk2 z?Fp#1SNWv3QWgq_V^fl-O6ipsz_sEysfe*OAzayqWo z{>YmoGiXP)GAHbEIfB=W@fzr`s?;kH53Z`KJ10Cbd|WwBm{n3@kJe@!lWQ6&b?>RB zMV^jrva6~IfAQi4ffIjhbd;Rs17ubaphH6k2tmNSSJfcJ%)UoJUGYX?1#$42X*9*( zo~2VuIUu6a(Lvs%i|b?E5~-f=y=(P$SJu{^#5F3vaNE6G%*)FQ0_6hkQ0?>Z$Hr1U z-)QGl2QiyJh!Q?q-1jVoB=!{P*4k(3?wHfxAjidLamHgo`|VpU9c7~L{T$g zTA#!!0EB|@MZ*fGl`aYejc^nCy<<=Owe|IV^m`-G=^8AMCyh4UM3=zC^zD3|!yH$t zR6ra0>6%@FG{z%J9#n_C-_n@dT-di{fR>tu#>0$NNKh~yLd)CJUda~%EuA6YXI()D z;9!(__Lb!6{p+0&Rz-&{*_5SwCa@mf7DL^`> zaLAHxN*>HgX;;@c);?{8W1xgx!AEKIU_NhM$AGo-u4nh(Ged03dXss2zHn0F_Ubz` zZR`6RWB;r5QZU3-03RvQuAO=NW%!-XfIb6%LOP{?g(z%*pg0=YxTwSvOMU`Dsu98t zw5rDQ)efQNC#1YkYt~ODJS6f3)f*>M#sTlw-9)8!#&UWIBr^{G1EJAn(f`Kb_gvm5 z_=l;A_XHS;;sZZa6T|}^ZkE*ij(<|DOWj|ZqoH2-s6@r$^?30PFqJXAo|o5%rRU@0 z%SXEu8V8ekaQWmwWzH?_mRS&$E%aNBjkC>^5m`cxjYOQ2NSEjo}L~qGKDb+uzcn{3KG^~|Lv{sBn(#T zqp!FL1>C{`@h9r@Avy>EfE@jM7a+?7XvI0ndI&<-8Ez3j{`(^@P&w0oV?CHxH8#)e zq>qVJ41)oJ&oum`j7UdM zd-%=g-!?`m=?)vfRRGRi8SpGfIkg{j$8jt@^>e&L<&fv$7;o8W>g@&p=xJ+kmQ{~D zT948oqa5O`HL({z6qRoOb6E0SWta}9rdx>a7AJ{mdeI08)uk#vpPCFZ6(~H~1~&-il!zI6fs$_j7f%VbT0 F{s-1-Kk5Jg diff --git a/widgets/yawn/icons/MixedRainAndSleet.png b/widgets/yawn/icons/MixedRainAndSleet.png deleted file mode 100755 index 7f0d252565ba1e256fc4fb281eab2ba2fbd1be12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 IvXbTf?`dGNzKt4V`T=vcm9#$5vHe4?5 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 b@c`k>S|VAx$A*JPDIsNfb-5}T^U(hTcXN<$ diff --git a/widgets/yawn/icons/NightFair.png b/widgets/yawn/icons/NightFair.png deleted file mode 120000 index 23df45a..0000000 --- a/widgets/yawn/icons/NightFair.png +++ /dev/null @@ -1 +0,0 @@ -NightClear.png \ No newline at end of file diff --git a/widgets/yawn/icons/NightFairWindy.png b/widgets/yawn/icons/NightFairWindy.png deleted file mode 120000 index 23df45a..0000000 --- a/widgets/yawn/icons/NightFairWindy.png +++ /dev/null @@ -1 +0,0 @@ -NightClear.png \ No newline at end of file diff --git a/widgets/yawn/icons/README.md b/widgets/yawn/icons/README.md deleted file mode 100644 index e4dc111..0000000 --- a/widgets/yawn/icons/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Yawn icons -========== - -These are [Plain Weather Icons](http://merlinthered.deviantart.com/art/plain-weather-icons-157162192), created by [MerlinTheRed](http://merlinthered.deviantart.com/). - - diff --git a/widgets/yawn/icons/Sleet.png b/widgets/yawn/icons/Sleet.png deleted file mode 120000 index f8f9693..0000000 --- a/widgets/yawn/icons/Sleet.png +++ /dev/null @@ -1 +0,0 @@ -SnowShowers.png \ No newline at end of file diff --git a/widgets/yawn/icons/Snow.png b/widgets/yawn/icons/Snow.png deleted file mode 120000 index f8f9693..0000000 --- a/widgets/yawn/icons/Snow.png +++ /dev/null @@ -1 +0,0 @@ -SnowShowers.png \ No newline at end of file diff --git a/widgets/yawn/icons/SnowFlurries.png b/widgets/yawn/icons/SnowFlurries.png deleted file mode 120000 index 2e090cd..0000000 --- a/widgets/yawn/icons/SnowFlurries.png +++ /dev/null @@ -1 +0,0 @@ -BlowingSnow.png \ No newline at end of file diff --git a/widgets/yawn/icons/SnowShowers.png b/widgets/yawn/icons/SnowShowers.png deleted file mode 100755 index 30534a20d052bbc9c6353dd9eb950f3ea5956954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9961 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 diff --git a/widgets/yawn/init.lua b/widgets/yawn/init.lua deleted file mode 100644 index 1f6b0f4..0000000 --- a/widgets/yawn/init.lua +++ /dev/null @@ -1,206 +0,0 @@ - ---[[ - - Licensed under GNU General Public License v2 - * (c) 2013, Luke Bonham - ---]] - -local newtimer = require("lain.helpers").newtimer -local async = require("lain.asyncshell") - -local naughty = require("naughty") -local wibox = require("wibox") - -local debug = { getinfo = debug.getinfo } -local io = { lines = io.lines, - open = io.open } -local os = { date = os.date, - getenv = os.getenv } -local string = { find = string.find, - match = string.match, - gsub = string.gsub, - sub = string.sub } -local tonumber = tonumber - -local setmetatable = setmetatable - --- YAhoo! Weather Notification --- lain.widgets.yawn -local yawn = -{ - icon = wibox.widget.imagebox(), - widget = wibox.widget.textbox('') -} - -local project_path = debug.getinfo(1, 'S').source:match[[^@(.*/).*$]] -local localizations_path = project_path .. 'localizations/' -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*$*)[.]") or "en_US" -- if LANG is not set -local weather_data = nil -local notification = nil -local city_id = nil -local sky = nil -local settings = function() end - -yawn_notification_preset = {} - -function yawn.fetch_weather() - local url = api_url .. units_set .. city_id - local cmd = "curl --connect-timeout 1 -fsm 3 '" .. url .. "'" - - async.request(cmd, function(f) - local text = f:read("*a") - f:close() - - -- In case of no connection or invalid city ID - -- widgets won't display - if text == "" or text:match("City not found") - then - 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 ") - else - weather_data = "City not found!\n" .. - "Are you sure " .. city_id .. - " is your Yahoo city ID?" - yawn.widget:set_text(" ? ") - end - return - end - - -- Processing raw data - weather_data = text:gsub("<.->", "") - weather_data = weather_data:match("Current Conditions:.-Full") or "" - - -- may still happens in case of bad connectivity - if weather_data == "" then - yawn.icon:set_image(icon_path .. "na.png") - yawn.widget:set_text(" ? ") - return - end - - weather_data = weather_data:gsub("Current Conditions:.-\n", "Now: ") - weather_data = weather_data:gsub("Forecast:.-\n", "") - weather_data = weather_data:gsub("\nFull", "") - weather_data = weather_data:gsub("[\n]$", "") - weather_data = weather_data:gsub(" [-] " , ": ") - weather_data = weather_data:gsub("[.]", ",") - weather_data = weather_data:gsub("High: ", "") - weather_data = weather_data:gsub(" Low: ", " - ") - - -- Getting info for text widget - local now = weather_data:sub(weather_data:find("Now:")+5, - weather_data:find("\n")-1) - forecast = now:sub(1, now:find(",")-1) - units = now:sub(now:find(",")+2, -2) - - -- Day/Night icon change - local hour = tonumber(os.date("%H")) - sky = icon_path - - if string.find(forecast, "Clear") or - string.find(forecast, "Fair") or - string.find(forecast, "Partly Cloudy") or - string.find(forecast, "Mostly Cloudy") - then - if hour >= 6 and hour <= 18 - then - sky = sky .. "Day" - else - sky = sky .. "Night" - end - end - - sky = sky .. forecast:gsub(" ", ""):gsub("/", "") .. ".png" - - -- In case there's no defined icon for current forecast - if io.open(sky) == nil then - sky = icon_path .. "na.png" - end - - -- Localization - local f = io.open(localizations_path .. language, "r") - if language:find("en_") == nil and f ~= nil - then - f:close() - for line in io.lines(localizations_path .. language) - do - word = string.sub(line, 1, line:find("|")-1) - translation = string.sub(line, line:find("|")+1) - weather_data = string.gsub(weather_data, word, translation) - end - end - - -- Finally setting infos - yawn.icon:set_image(sky) - widget = yawn.widget - - _data = weather_data:match(": %S.-,") or weather_data - forecast = _data:gsub(": ", ""):gsub(",", "") - units = units:gsub(" ", "") - - settings() - end) -end - -function yawn.hide() - if notification ~= nil then - naughty.destroy(notification) - notification = nil - end -end - -function yawn.show(t_out) - if yawn.widget._layout.text:match("?") - then - yawn.fetch_weather() - end - - yawn.hide() - - notification = naughty.notify({ - preset = yawn_notification_preset, - text = weather_data, - icon = sky, - timeout = t_out, - }) -end - -function yawn.register(id, args) - local args = args or {} - local timeout = args.timeout or 600 - settings = args.settings or function() end - - if args.u == "f" then units_set = '?u=f&w=' end - - city_id = id - - newtimer("yawn", timeout, yawn.fetch_weather) - - yawn.icon:connect_signal("mouse::enter", function() - yawn.show(0) - end) - yawn.icon:connect_signal("mouse::leave", function() - yawn.hide() - end) - - return yawn -end - -function yawn.attach(widget, id, args) - yawn.register(id, args) - - widget:connect_signal("mouse::enter", function() - yawn.show(0) - end) - - widget:connect_signal("mouse::leave", function() - yawn.hide() - end) -end - -return setmetatable(yawn, { __call = function(_, ...) return yawn.register(...) end }) diff --git a/widgets/yawn/localizations/de_DE b/widgets/yawn/localizations/de_DE deleted file mode 100644 index 82cef79..0000000 --- a/widgets/yawn/localizations/de_DE +++ /dev/null @@ -1,61 +0,0 @@ -Now:|Jetzt: -Sun:|So: -Mon:|Mo: -Tue:|Di: -Wed:|Mi: -Thu:|Do: -Fri:|Fr: -Sat:|Sa: -Mostly Sunny|Größtenteils Sonnig -Sunny|Sonnig -Sun|Sonne -Rain/Thunder|Regen/Donner -Isolated Thunderstorms|Vereinzelte Gewitter -Scattered Thunderstorms|Aufgelockertes Gewitter -Thundershowers|Gewitterschauer -Thunderstorms|Gewitter -Thunder in the Vicinity|Donner in der Umgebung -Thunder|Donner -AM|Vormittags -PM|Nachmittags -Early|Früh -Late|Spät -Few|einige -Severe|starker -Clear|Klar -Fair|Heiter -Partly|teilweise -Mostly|größtenteils -Cloudy|Wolkig -Clouds|Wolken -Scattered Showers|Vereinzelte Schauer -Light Snow Showers|Leichter Schneeregen -Snow Showers|Schneeregen -Heavy Snow|Starker Schneefall -Scattered Snow Showers|Vereinzelter Schneefall -Mixed Rain And Snow|Gemischter Regen und Schnee -Mixed Rain And Sleet|Gemischter Regen und Graupel -Mixed Snow And Sleet|Gemischter Schnee und Graupel -Mixed Rain And Hail|Gemischter Regen und Hagel -Snow Flurries|Schneegestöber -Blowing Snow|Schneetreiben -Blowing Rain|Treibender Regen -Heavy Rain|Starke Regenfälle -Freezing Rain|Eisregen -Showers|Schauer -Light Rain|Leichter Regen -Heavy|Starker -Rain|Regen -Windy|Windig -Wind|Wind -Snow|Schnee -Sleet|Graupel -Freezing Drizzle|Gefrierender Sprühregen -Light Drizzle|Leichter Sprühregen -Drizzle|Sprühregen -Hail|Hagel -Fog|Nebel -Foggy|Nebelig -Haze|Dunst -Light|leichter -With|mit \ No newline at end of file diff --git a/widgets/yawn/localizations/fr_FR b/widgets/yawn/localizations/fr_FR deleted file mode 100644 index 18a35bb..0000000 --- a/widgets/yawn/localizations/fr_FR +++ /dev/null @@ -1,61 +0,0 @@ -Now:|Auj: -Sun:|Dim: -Mon:|Lun: -Tue:|Mar: -Wed:|Mer: -Thu:|Jeu: -Fri:|Ven: -Sat:|Sam: -Mostly Sunny|Partiellement ensoleillé -Sunny|Ensoleillé -Sun|Soleil -Rain/Thunder|Pluie/Orage -Isolated Thunderstorms|Orages localisés -Scattered Thunderstorms|Orages épars -Thundershowers|Tempête -Thunderstorms|Orages -Thunder in the Vicinity|Orage aux alentours -Thunder|Orages -AM|Matinée -PM|Après-midi -Early|Tôt -Late|Tard -Few|Quelques -Severe|Sévère -Clear|Clair -Fair|Clair -Partly|Partiellement -Mostly|Très -Cloudy|Nuageux -Clouds|Nuages -Scattered Showers|Nuages épars -Light Snow Showers|Légères averses de neige -Snow Showers|Averses de neige -Heavy Snow|Neige -Scattered Snow Showers|Averses de neige localisées -Mixed Rain And Snow|Alternance de neige et de pluie -Mixed Rain And Sleet|Alternance de pluie et de neige fondue -Mixed Snow And Sleet|Alternance de neige et de neige fondue -Mixed Rain And Hail|Alternance de pluie et de grêle -Snow Flurries|Averses de neige -Blowing Snow|Neige -Blowing Rain|Pluie -Heavy Rain|Pluie forte -Freezing Rain|Pluie verglaçante -Showers|Averses -Light Rain|Pluie légère -Heavy|Forte -Rain|Pluie -Windy|Venteux -Wind|Vent -Snow|Neige -Sleet|Neige fondue -Freezing Drizzle|Bruine verglaçante -Light Drizzle|Légère bruine -Drizzle|Bruine -Hail|Grêle -Fog|Brouillard -Foggy|Brumeux -Haze|Brume -Light|Clair -With|Avec diff --git a/widgets/yawn/localizations/it_IT b/widgets/yawn/localizations/it_IT deleted file mode 100644 index 44d010e..0000000 --- a/widgets/yawn/localizations/it_IT +++ /dev/null @@ -1,61 +0,0 @@ -Now:|Ora: -Sun:|Dom: -Mon:|Lun: -Tue:|Mar: -Wed:|Mer: -Thu:|Gio: -Fri:|Ven: -Sat:|Sab: -Mostly Sunny|Abbastanza Soleggiato -Sunny|Soleggiato -Sun|Soleggiato -Rain/Thunder|Temporali -Isolated Thunderstorms|Temporali Isolati -Scattered Thunderstorms|Temporali Sparsi -Thundershowers|Rovesci Temporaleschi -Thunderstorms|Temporali -Thunder in the Vicinity|Tuoni in prossimità -Thunder|Temporale -AM|In Mattinata -PM|Nel Pomeriggio -Early|In Mattinata -Late|In Serata -Few|Sporadiche -Severe|Forti -Clear|Sereno -Fair|Sereno -Partly|Parzialmente -Mostly|Molto -Cloudy|Nuvoloso -Clouds|Nuvoloso -Scattered Showers|Temporali Sparsi -Light Snow Showers|Nevicate Leggere -Snow Showers|Nevicate -aeavy Snow|Forti Nevicate -Scattered Snow Showers|Nevicate Sparse -Mixed Rain And Snow|Pioggia E Neve -Mixed Rain And Sleet|Pioggia E Nevischio -Mixed Snow And Sleet|Neve E Nevischio -Mixed Rain And Hail|Pioggia E Grandine -Snow Flurries|Folate Di Neve -Blowing Snow|Neve Battente -Blowing Rain|Pioggia Battente -Heavy Rain|Forti Piogge -Freezing Rain|Pioggia Congelantesi -Showers|Piogge -Light Rain|Pioggia Leggera -Heavy|Forti -Rain|Piovoso -Windy|Ventoso -Wind|Ventoso -Snow|Neve -Sleet|Nevischio -Light Drizzle|Pioggia Leggera -Drizzle|Pioggia Leggera -Freezing Drizzle|Pioggerella Congelantesi -Hail|Grandine -Fog|Nebbia -Foggy|Nebbioso -Haze|Nebbia -Light|Leggere -With|Con diff --git a/widgets/yawn/localizations/localization_template b/widgets/yawn/localizations/localization_template deleted file mode 100644 index 2fbf066..0000000 --- a/widgets/yawn/localizations/localization_template +++ /dev/null @@ -1,61 +0,0 @@ -Now:| -Sun:| -Mon:| -Tue:| -Wed:| -Thu:| -Fri:| -Sat:| -Mostly Sunny| -Sunny| -Sun| -Rain/Thunder| -Isolated Thunderstorms| -Scattered Thunderstorms| -Thundershowers| -Thunderstorms| -Thunder in the Vicinity| -Thunder| -AM| -PM| -Early| -Late| -Few| -Severe| -Clear| -Fair| -Partly| -Mostly| -Cloudy| -Clouds| -Scattered Showers| -Light Snow Showers| -Snow Showers| -Heavy Snow| -Scattered Snow Showers| -Mixed Rain And Snow| -Mixed Rain And Sleet| -Mixed Snow And Sleet| -Mixed Rain And Hail| -Snow Flurries| -Blowing Snow| -Blowing Rain| -Heavy Rain| -Freezing Rain| -Showers| -Light Rain| -Heavy| -Rain| -Windy| -Wind| -Snow| -Sleet| -Freezing Drizzle| -Light Drizzle| -Drizzle| -Hail| -Fog| -Foggy| -Haze| -Light| -With| diff --git a/widgets/yawn/localizations/ru_RU b/widgets/yawn/localizations/ru_RU deleted file mode 100644 index 0b2ae23..0000000 --- a/widgets/yawn/localizations/ru_RU +++ /dev/null @@ -1,61 +0,0 @@ -Now:|Cейчас: -Sun:|Воскресенье: -Mon:|Понедельник: -Tue:|Вторник: -Wed:|Среда: -Thu:|Четверг: -Fri:|Пятница: -Sat:|Суббота: -Mostly Sunny|Преимущественно солнечно -Sunny|Солнечно -Sun|Солнце -Rain/Thunder|Дождь/Гром -Isolated Thunderstorms|Изолированные грозы -Scattered Thunderstorms|Рассеянные грозы -Thundershowers|Ливни -Thunderstorms|Грозы -Thunder in the Vicinity|Гром в окрестностях -Thunder|Гром -AM|Утро -PM|Вечер -Early|Рано -Late|Поздно -Few|Мало -Severe|Тяжелый -Clear|Ясно -Fair|Светлый -Partly|Частично -Mostly|По большей части -Cloudy|Облачно -Clouds|Облака -Scattered Showers|Рассеянные ливни -Light Snow Showers|Небольшой снег -Snow Showers|Ливневый Снег -Heavy Snow|Сильный снегопад -Scattered Snow Showers|Рассеянный ливневый снег -Mixed Rain And Snow|Снег с дождём -Mixed Rain And Sleet|Дождь и мокрый снег -Mixed Snow And Sleet|Снег и мокрый снег -Mixed Rain And Hail|Дождь с градом -Snow Flurries|Снежные порывы -Blowing Snow|Снег и ветер -Blowing Rain|Дождь и ветер -Heavy Rain|Сильный дождь -Freezing Rain|Ледяной дождь -Showers|Ливни -Light Rain|Небольшой дождь -Heavy|Сильный -Rain|Дождь -Windy|Ветреный -Wind|Ветер -Snow|Снег -Sleet|Мокрый снег -Freezing Drizzle|Изморозь -Light Drizzle|Лёгкая изморось -Drizzle|Моросящий дождь -Hail|Град -Fog|Туман -Foggy|Туманно -Haze|Дымка -Light|Лёгкий -With|С diff --git a/widgets/yawn/localizations/zh_CN b/widgets/yawn/localizations/zh_CN deleted file mode 100644 index 61e98a4..0000000 --- a/widgets/yawn/localizations/zh_CN +++ /dev/null @@ -1,61 +0,0 @@ -Now:|当前: -Sun:|周日: -Mon:|周一: -Tue:|周二: -Wed:|周三: -Thu:|周四: -Fri:|周五: -Sat:|周六: -Mostly Sunny|晴时多云 -Sunny|晴朗 -Sun|太阳 -Rain/Thunder|雨/雷 -Isolated Thunderstorms|局部雷雨 -Scattered Thunderstorms|零星雷雨 -Thundershowers|雷阵雨 -Thunderstorms|雷雨 -Thunder in the Vicinity|周围有雷雨 -Thunder|雷鸣 -AM|上午 -PM|下午 -Early|早 -Late|晚 -Few|短暂 -Severe|恶劣 -Clear|晴朗 -Fair|晴 -Partly|局部 -Mostly|大部 -Cloudy|多云 -Clouds|有云 -Scattered Showers|零星阵雨 -Light Snow Showers|小阵雪 -Snow Showers|阵雪 -Heavy Snow|大雪 -Scattered Snow Showers|零星阵雪 -Mixed Rain And Snow|雨夹雪 -Mixed Rain And Sleet|雨转雨夹雪 -Mixed Snow And Sleet|雪转雨夹雪 -Mixed Rain And Hail|雨夹冰雹 -Snow Flurries|阵雪 -Blowing Snow|风吹雪 -Blowing Rain|风吹雨 -Heavy Rain|大雨 -Freezing Rain|冻雨 -Showers|阵雨 -Light Rain|小雨 -Heavy|大 -Rain|雨 -Windy|有风 -Wind|风 -Snow|雪 -Sleet|冻雨 -Freezing Drizzle|冻毛毛雨 -Light Drizzle|细雨 -Drizzle|毛毛雨 -Hail|冰雹 -Fog|雾 -Foggy|有雾 -Haze|霾 -Light|小 -With|與 diff --git a/widgets/yawn/localizations/zh_TW b/widgets/yawn/localizations/zh_TW deleted file mode 100644 index 03644c1..0000000 --- a/widgets/yawn/localizations/zh_TW +++ /dev/null @@ -1,61 +0,0 @@ -Now:|現在: -Sun:|週日: -Mon:|週一: -Tue:|週二: -Wed:|週三: -Thu:|週四: -Fri:|週五: -Sat:|週六: -Mostly Sunny|晴時多雲 -Sunny|大太陽 -Sun|太陽 -Rain/Thunder|雨時有雷 -Isolated Thunderstorms|局部雷雨 -Scattered Thunderstorms|零星雷雨 -Thundershowers|雷陣雨 -Thunderstorms|雷雨 -Thunder in the Vicinity|局部性雷雨 -Thunder|雷嗚 -AM|上午 -PM|下午 -Early|早 -Late|晚有 -Few|短暫 -Severe|惡劣 -Clear|晴朗 -Fair|晴 -Partly|局部 -Mostly|大部 -Cloudy|多雲 -Clouds|有雲 -Scattered Showers|零星陣雨 -Light Snow Showers|小陣雪 -Snow Showers|陣雪 -Heavy Snow|大雪 -Scattered Snow Showers|零星陣雪 -Mixed Rain And Snow|雨夾雪 -Mixed Rain And Sleet|雨時雨夾雪 -Mixed Snow And Sleet|雪時雨夾雪 -Mixed Rain And Hail|雨夾冰雹 -Snow Flurries|陣雪 -Blowing Snow|風吹雪 -Blowing Rain|風吹雨 -Heavy Rain|大雨 -Freezing Rain|凍雨 -Showers|陣雨 -Light Rain|小雨 -Heavy|大 -Rain|雨 -Windy|有風 -Wind|風 -Snow|雪 -Sleet|冰珠 -Freezing Drizzle|凍毛毛雨 -Light Drizzle|細雨 -Drizzle|毛毛雨 -Hail|冰雹 -Fog|霧 -Foggy|有霧 -Haze|霾 -Light|小 -With|與 diff --git a/wiki b/wiki index b011c03..75c796a 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit b011c0339e805ee1596d0b6778d6c497dab41109 +Subproject commit 75c796a9a7a0f0f468bd36f77c7b918a2ff9a4d5