diff options
author | streetturtle <streetturtle@gmail.com> | 2017-02-07 20:31:34 -0500 |
---|---|---|
committer | streetturtle <streetturtle@gmail.com> | 2017-02-07 20:31:34 -0500 |
commit | 1e540af00b7cfcbbd4e3607079a01c7b68af3758 (patch) | |
tree | 55b989104fb548c5d033fcb5e7d746702bb0737e | |
parent | adfcec4068425bc63bb24c9bbd2f0e9312658c83 (diff) |
weather widget
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | screenshot.png | bin | 6286 -> 11559 bytes | |||
-rw-r--r-- | volume-widget/README.md | 3 | ||||
-rw-r--r-- | weather-widget/README.md | 15 | ||||
-rw-r--r-- | weather-widget/weather-widget.png | bin | 0 -> 17366 bytes | |||
-rw-r--r-- | weather-widget/weather.lua | 79 |
6 files changed, 97 insertions, 1 deletions
@@ -7,6 +7,7 @@ Set of super simple widgets compatible with Awesome Window Manager v.4. From left to right: - [spotify-widget](https://github.com/streetturtle/AwesomeWM/tree/master/spotify-widget) / [rhythmbox-widget](https://github.com/streetturtle/AwesomeWM/tree/master/rhythmbox-widget) +- [weather-widget](https://github.com/streetturtle/AwesomeWM/tree/master/weather-widget) - [email-widget](https://github.com/streetturtle/AwesomeWM/tree/master/email-widget) - [brightness-widget](https://github.com/streetturtle/AwesomeWM/tree/master/brightness-widget) - [volume-widget](https://github.com/streetturtle/AwesomeWM/tree/master/volume-widget) diff --git a/screenshot.png b/screenshot.png Binary files differindex db855f3..9e91f96 100644 --- a/screenshot.png +++ b/screenshot.png diff --git a/volume-widget/README.md b/volume-widget/README.md index 2006faa..35d280c 100644 --- a/volume-widget/README.md +++ b/volume-widget/README.md @@ -1,6 +1,7 @@ # Volume widget -Simple and easy-to-install widget for Awesome Window Manager which represents the sound level: ![Volume Wiget](./vol-widget-1.png) +Simple and easy-to-install widget for Awesome Window Manager which represents the sound level: ![Volume Widget]( +./vol-widget-1.png) Note that widget uses the Arc icon theme, so it should be [installed](https://github.com/horst3180/arc-icon-theme#installation) first under **/usr/share/icons/Arc/** folder. diff --git a/weather-widget/README.md b/weather-widget/README.md new file mode 100644 index 0000000..70f0677 --- /dev/null +++ b/weather-widget/README.md @@ -0,0 +1,15 @@ +# Weather widget + +![Weather Widget](./weather-widget.png) + +Note that widget uses the Arc icon theme, so it should be [installed](https://github.com/horst3180/arc-icon-theme#installation) first under **/usr/share/icons/Arc/** folder. + +## Installation + + - install lua socket +```bash +$ sudo apt-get install luasockets +``` + + - download json parser for lua: https://github.com/rxi/json.lua + - get Open Weather Map app id here: https://openweathermap.org/appid
\ No newline at end of file diff --git a/weather-widget/weather-widget.png b/weather-widget/weather-widget.png Binary files differnew file mode 100644 index 0000000..1d744b2 --- /dev/null +++ b/weather-widget/weather-widget.png diff --git a/weather-widget/weather.lua b/weather-widget/weather.lua new file mode 100644 index 0000000..0762073 --- /dev/null +++ b/weather-widget/weather.lua @@ -0,0 +1,79 @@ +local wibox = require("wibox") +local http = require("socket.http") +local json = require("json") +local naughty = require("naughty") + +local city = "Montreal,ca" +local open_map_key = "<openWeatherMap api key>" +local path_to_icons = "/usr/share/icons/Arc/status/symbolic/" + +local icon_widget = wibox.widget { + { + id = "icon", + resize = false, + widget = wibox.widget.imagebox, + }, + layout = wibox.container.margin(brightness_icon, 0, 0, 3), + set_image = function(self, path) + self.icon.image = path + end, +} + +local temp_widget = wibox.widget{ + font = "Play 9", + widget = wibox.widget.textbox, +} + +weather_widget = wibox.widget { + icon_widget, + temp_widget, + layout = wibox.layout.fixed.horizontal, +} + +-- helps to map openWeatherMap icons to Arc icons +local icon_map = { + ["01d"] = "weather-clear-symbolic.svg", + ["02d"] = "weather-few-clouds-symbolic.svg", + ["03d"] = "weather-clouds-symbolic.svg", + ["04d"] = "weather-overcast-symbolic.svg", + ["09d"] = "weather-showers-scattered-symbolic.svg", + ["10d"] = "weather-showers-symbolic.svg", + ["11d"] = "weather-storm-symbolic.svg", + ["13d"] = "weather-snow-symbolic.svg", + ["50d"] = "weather-fog-symbolic.svg", + ["01n"] = "weather-clear-night-symbolic.svg", + ["02n"] = "weather-few-clouds-night-symbolic.svg", + ["03n"] = "weather-clouds-night-symbolic.svg", + ["04n"] = "weather-overcast-symbolic.svg", + ["09n"] = "weather-showers-scattered-symbolic.svg", + ["10n"] = "weather-showers-symbolic.svg", + ["11n"] = "weather-storm-symbolic.svg", + ["13n"] = "weather-snow-symbolic.svg", + ["50n"] = "weather-fog-symbolic.svg" +} + +-- handy function to convert temperatire in Kelvin to Celcius +function to_celcius(kelvin) + return math.floor(tonumber(kelvin) - 273.15) +end + +local weather_timer = timer({ timeout = 600 }) +local resp + +weather_timer:connect_signal("timeout", function () + local resp_json = http.request("http://api.openweathermap.org/data/2.5/weather?q=" .. city .."&appid=" .. open_map_key) + resp = json.decode(resp_json) + icon_widget.image = path_to_icons .. icon_map[resp.weather[1].icon] + temp_widget:set_text(to_celcius(resp.main.temp)) +end) +weather_timer:emit_signal("timeout") + +weather_widget:connect_signal("mouse::enter", function() + naughty.notify{ + icon = path_to_icons .. icon_map[resp.weather[1].icon], + icon_size=20, + text = '<b>Humidity:</b> ' .. resp.main.humidity .. '%<br><b>Temperature: </b>' .. to_celcius(resp.main.temp), + timeout = 5, hover_timeout = 0.5, + width = 200, + } +end)
\ No newline at end of file |