summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstreetturtle <streetturtle@gmail.com>2017-02-07 20:31:34 -0500
committerstreetturtle <streetturtle@gmail.com>2017-02-07 20:31:34 -0500
commit1e540af00b7cfcbbd4e3607079a01c7b68af3758 (patch)
tree55b989104fb548c5d033fcb5e7d746702bb0737e
parentadfcec4068425bc63bb24c9bbd2f0e9312658c83 (diff)
weather widget
-rw-r--r--README.md1
-rw-r--r--screenshot.pngbin6286 -> 11559 bytes
-rw-r--r--volume-widget/README.md3
-rw-r--r--weather-widget/README.md15
-rw-r--r--weather-widget/weather-widget.pngbin0 -> 17366 bytes
-rw-r--r--weather-widget/weather.lua79
6 files changed, 97 insertions, 1 deletions
diff --git a/README.md b/README.md
index c366ea8..4b61157 100644
--- a/README.md
+++ b/README.md
@@ -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
index db855f3..9e91f96 100644
--- a/screenshot.png
+++ b/screenshot.png
Binary files differ
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
new file mode 100644
index 0000000..1d744b2
--- /dev/null
+++ b/weather-widget/weather-widget.png
Binary files differ
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