Moved from luasec to pure curl implementation. mcstatus is now async.

nixos
lanxu 2018-02-03 13:41:40 +02:00
parent 0ab3c47607
commit f490e6e8ef
2 changed files with 47 additions and 45 deletions

View File

@ -4,7 +4,6 @@ lanxu awesome scripts
Requirements
------------
- luasec (for https connections)
- dkjson (for parsing json. Available with this widget)
How to use

View File

@ -1,9 +1,9 @@
local naughty = require("naughty")
local wibox = require("wibox")
local json = require("lanxu/dkjson")
local https = require("ssl.https")
local gears = require("gears")
local focused = require("awful.screen").focused
local naughty = require("naughty")
local wibox = require("wibox")
local json = require("lanxu/dkjson")
local gears = require("gears")
local focused = require("awful.screen").focused
local easy_async = require("awful.spawn").easy_async
local function factory(args)
local args = args or {}
@ -26,11 +26,11 @@ local function factory(args)
end
minecraft.notification = naughty.notify({
text = minecraft.notification_text,
-- icon = minecraft.icon
timeout = 0,
preset = notification_preset,
})
text = minecraft.notification_text,
-- icon = minecraft.icon
timeout = 0,
preset = notification_preset,
})
end
function minecraft.hide()
@ -55,47 +55,50 @@ local function factory(args)
end
function minecraft.update()
local response, error = https.request(calluri)
local obj, pos, err = json.decode (response, 1, nil)
local cmd = string.format("curl -s " .. "'" .. calluri .. "'")
totalplayers = 0
easy_async(cmd, function(response, stderr, reason, exit_code)
local obj, pos, err = json.decode(response, 1, nil)
if not err then
-- First get the length of the longest server name, for proper column alignment
local max_len = 6 -- Initialize to the length of "Server"
for k, v in pairs(obj) do
if (tonumber(v.num_players) > 0 or not hideempty) and (v.status == "online" or not hideoffline) then
local tmp = string.len(v.server_name)
if tmp > max_len then
max_len = tmp
end
end
end
totalplayers = 0
local fmt = string.format("%%-%ds %%-8s %%-7s\n", max_len)
local text = string.format(fmt, "Server", "Version", "Players")
for k, v in pairs(obj) do
local players = tonumber(v.num_players)
if (players > 0 or not hideempty) and (v.status == "online" or not hideoffline) then
text = text .. string.format(fmt, v.server_name, v.version, v.num_players)
if v.players then
for i, p in pairs(v.players) do
text = text .. ' > ' .. p .. '\n'
if not err then
-- First get the length of the longest server name, for proper column alignment
local max_len = 6 -- Initialize to the length of "Server"
for k, v in pairs(obj) do
if (tonumber(v.num_players) > 0 or not hideempty) and (v.status == "online" or not hideoffline) then
local tmp = string.len(v.server_name)
if tmp > max_len then
max_len = tmp
end
end
end
totalplayers = totalplayers + players
end
local fmt = string.format("%%-%ds %%-8s %%-7s\n", max_len)
local text = string.format(fmt, "Server", "Version", "Players")
minecraft.notification_text = text
minecraft.totalplayers = totalplayers;
widget = minecraft.widget
settings()
end
for k, v in pairs(obj) do
local players = tonumber(v.num_players)
if (players > 0 or not hideempty) and (v.status == "online" or not hideoffline) then
text = text .. string.format(fmt, v.server_name, v.version, v.num_players)
if v.players then
for i, p in pairs(v.players) do
text = text .. ' > ' .. p .. '\n'
end
end
end
totalplayers = totalplayers + players
end
minecraft.notification_text = text
minecraft.totalplayers = totalplayers;
widget = minecraft.widget
settings()
end
end)
end
minecraft.attach(minecraft.widget)