From e7061e72fffb97ca76ca1622d83a3eca15ea3e5a Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Thu, 22 Feb 2018 12:00:14 +1300 Subject: [PATCH] factor cryptowidgets into separate module --- .config/awesome/cryptocoin_widgets.lua | 39 ++++++++++++++++++++++++++ .config/awesome/rc.lua | 37 ++---------------------- 2 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 .config/awesome/cryptocoin_widgets.lua diff --git a/.config/awesome/cryptocoin_widgets.lua b/.config/awesome/cryptocoin_widgets.lua new file mode 100644 index 0000000..e0f3d2a --- /dev/null +++ b/.config/awesome/cryptocoin_widgets.lua @@ -0,0 +1,39 @@ +local dkjson = require("lain.util").dkjson +local math = require("math") +local lain = require("lain") + +local widgets = {} + +local function poloniex_price(output, pair, prec) + local xc, pos, err = dkjson.decode(output, 1, nil) + if not prec then prec = 4 end + val = (xc and xc[pair]["last"]) or 0 + val = math.floor(val*10^prec+0.5)/10^prec + return (not err and val) or "n/a" +end + +widgets.eth_widget = lain.widget.watch({ + cmd = "curl -m5 -s 'https://poloniex.com/public?command=returnTicker'", + timeout = 600, + settings = function() + widget:set_text(poloniex_price(output, 'BTC_ETH') .. " Ƀ/Ξ") + end +}) + +local function coindesk_price(output, base, prec) + local xc, pos, err = dkjson.decode(output, 1, nil) + if not prec then prec = 4 end + val = (xc and xc["bpi"][base]["rate_float"]) or 0 + val = math.floor(val*10^prec+0.5)/10^prec + return (not err and val) or "n/a" +end + +widgets.btc_widget = lain.widget.watch({ + cmd = "curl -m5 -Ls 'https://api.coindesk.com/v1/bpi/currentprice/EUR.json'", + timeout = 600, + settings = function() + widget:set_text(coindesk_price(output, "EUR", 2) .. " €/Ƀ") + end +}) + +return widgets diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index 5176f4d..d4d0cc3 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -22,8 +22,7 @@ local has_fdo, freedesktop = pcall(require, "freedesktop") -- Other libraries local tblutils = require("tblutils") local lain = require("lain") -local dkjson = require("lain.util").dkjson -local math = require("math") +local ccwidgets = require("cryptocoin_widgets") local luatz = require("luatz") -- }}} @@ -134,38 +133,6 @@ local lain_bat = lain.widget.bat({ widget:set_text(bat_now.perc .. "% " .. delim .. " " .. bat_now.time) end, }) - -local function poloniex_price(output, pair, prec) - local xc, pos, err = dkjson.decode(output, 1, nil) - if not prec then prec = 4 end - val = (xc and xc[pair]["last"]) or 0 - val = math.floor(val*10^prec+0.5)/10^prec - return (not err and val) or "n/a" -end - -local eth_widget = lain.widget.watch({ - cmd = "curl -m5 -s 'https://poloniex.com/public?command=returnTicker'", - timeout = 600, - settings = function() - widget:set_text(poloniex_price(output, 'BTC_ETH') .. " Ƀ/Ξ") - end -}) - -local function coindesk_price(output, base, prec) - local xc, pos, err = dkjson.decode(output, 1, nil) - if not prec then prec = 4 end - val = (xc and xc["bpi"][base]["rate_float"]) or 0 - val = math.floor(val*10^prec+0.5)/10^prec - return (not err and val) or "n/a" -end - -local btc_widget = lain.widget.watch({ - cmd = "curl -m5 -Ls 'https://api.coindesk.com/v1/bpi/currentprice/EUR.json'", - timeout = 600, - settings = function() - widget:set_text(coindesk_price(output, "EUR", 2) .. " €/Ƀ") - end -}) -- }}} -- {{{ Menu @@ -358,7 +325,7 @@ awful.screen.connect_for_each_screen(function(s) layout = wibox.layout.fixed.horizontal, mykeyboardlayout, wibox.widget.systray(), - btc_widget, + ccwidgets.btc_widget, spacer, lain_bat.widget, spacer, -- 2.39.2