mirror of https://github.com/lcpz/lain.git
widgets fix
This commit is contained in:
parent
bc574619fe
commit
4bde4b5eea
|
@ -8,8 +8,10 @@
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
local debug = require("debug")
|
local debug = require("debug")
|
||||||
local rawget = rawget
|
|
||||||
|
local capi = { timer = timer }
|
||||||
local io = { open = io.open }
|
local io = { open = io.open }
|
||||||
|
local rawget = rawget
|
||||||
|
|
||||||
-- Lain helper functions for internal use
|
-- Lain helper functions for internal use
|
||||||
-- lain.helpers
|
-- lain.helpers
|
||||||
|
@ -49,7 +51,7 @@ end
|
||||||
helpers.timer_table = {}
|
helpers.timer_table = {}
|
||||||
|
|
||||||
function helpers.newtimer(name, timeout, fun, nostart)
|
function helpers.newtimer(name, timeout, fun, nostart)
|
||||||
helpers.timer_table[name] = timer({ timeout = timeout })
|
helpers.timer_table[name] = capi.timer({ timeout = timeout })
|
||||||
helpers.timer_table[name]:connect_signal("timeout", fun)
|
helpers.timer_table[name]:connect_signal("timeout", fun)
|
||||||
helpers.timer_table[name]:start()
|
helpers.timer_table[name]:start()
|
||||||
if not nostart then
|
if not nostart then
|
||||||
|
|
|
@ -29,30 +29,31 @@ local function worker(args)
|
||||||
alsa.widget = wibox.widget.textbox('')
|
alsa.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function alsa.update()
|
function alsa.update()
|
||||||
local f = io.popen('amixer get ' .. channel)
|
local f = assert(io.popen('amixer get ' .. channel))
|
||||||
local mixer = f:read("*all")
|
local mixer = f:read("*all")
|
||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
volume = {}
|
volume_now = {}
|
||||||
|
|
||||||
volume.level, volume.status = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
|
volume_now.level, volume_now.status = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
|
||||||
|
|
||||||
if volume.level == nil
|
if volume_now.level == nil
|
||||||
then
|
then
|
||||||
volume.level = 0
|
volume_now.level = "0"
|
||||||
volume.status = "off"
|
volume_now.status = "off"
|
||||||
end
|
end
|
||||||
|
|
||||||
if volume.status == ""
|
if volume_now.status == ""
|
||||||
then
|
then
|
||||||
if volume.level == 0
|
if volume_now.level == "0"
|
||||||
then
|
then
|
||||||
volume.status = "off"
|
volume_now.status = "off"
|
||||||
else
|
else
|
||||||
volume.status = "on"
|
volume_now.status = "on"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
widget = alsa.widget
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,9 @@ local function worker(args)
|
||||||
|
|
||||||
bat.widget = wibox.widget.textbox('')
|
bat.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function bat.update()
|
function update()
|
||||||
bat_now = {
|
bat_now = {
|
||||||
status = "not present",
|
status = "Not present",
|
||||||
perc = "N/A",
|
perc = "N/A",
|
||||||
time = "N/A",
|
time = "N/A",
|
||||||
watt = "N/A"
|
watt = "N/A"
|
||||||
|
@ -110,7 +110,7 @@ local function worker(args)
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer("bat", timeout, bat.update)
|
newtimer("bat", timeout, update)
|
||||||
|
|
||||||
return bat.widget
|
return bat.widget
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,12 +21,12 @@ local setmetatable = setmetatable
|
||||||
-- Calendar notification
|
-- Calendar notification
|
||||||
-- lain.widgets.calendar
|
-- lain.widgets.calendar
|
||||||
local calendar = {}
|
local calendar = {}
|
||||||
local notification = nil
|
local cal_notification = nil
|
||||||
|
|
||||||
function calendar:hide()
|
function calendar:hide()
|
||||||
if notification ~= nil then
|
if cal_notification ~= nil then
|
||||||
naughty.destroy(notification)
|
naughty.destroy(cal_notification)
|
||||||
notification = nil
|
cal_notification = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -95,12 +95,12 @@ function calendar:show(t_out, inc_offset)
|
||||||
.. "</span></tt>"
|
.. "</span></tt>"
|
||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
notification = naughty.notify({ text = c_text,
|
cal_notification = naughty.notify({ text = c_text,
|
||||||
icon = calendar.notify_icon,
|
icon = calendar.notify_icon,
|
||||||
position = calendar.position,
|
position = calendar.position,
|
||||||
fg = calendar.fg,
|
fg = calendar.fg,
|
||||||
bg = calendar.bg,
|
bg = calendar.bg,
|
||||||
timeout = tims })
|
timeout = tims })
|
||||||
end
|
end
|
||||||
|
|
||||||
function calendar:attach(widget, args)
|
function calendar:attach(widget, args)
|
||||||
|
|
|
@ -33,7 +33,7 @@ local function worker(args)
|
||||||
|
|
||||||
cpu.widget = wibox.widget.textbox('')
|
cpu.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function cpu.update()
|
function update()
|
||||||
-- Read the amount of time the CPUs have spent performing
|
-- Read the amount of time the CPUs have spent performing
|
||||||
-- different kinds of work. Read the first line of /proc/stat
|
-- different kinds of work. Read the first line of /proc/stat
|
||||||
-- which is the sum of all CPUs.
|
-- which is the sum of all CPUs.
|
||||||
|
@ -68,7 +68,7 @@ local function worker(args)
|
||||||
cpu.last_total = total
|
cpu.last_total = total
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer("cpu", timeout, cpu.update)
|
newtimer("cpu", timeout, update)
|
||||||
|
|
||||||
return cpu.widget
|
return cpu.widget
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,7 +27,7 @@ local setmetatable = setmetatable
|
||||||
local fs = {}
|
local fs = {}
|
||||||
|
|
||||||
local notification = nil
|
local notification = nil
|
||||||
notification_preset = { fg = beautiful.fg_normal }
|
fs_notification_preset = { fg = beautiful.fg_normal }
|
||||||
|
|
||||||
function fs:hide()
|
function fs:hide()
|
||||||
if notification ~= nil then
|
if notification ~= nil then
|
||||||
|
@ -44,7 +44,7 @@ function fs:show(t_out)
|
||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
notification = naughty.notify({
|
notification = naughty.notify({
|
||||||
preset = notification_preset,
|
preset = fs_notification_preset,
|
||||||
text = ws,
|
text = ws,
|
||||||
timeout = t_out
|
timeout = t_out
|
||||||
})
|
})
|
||||||
|
@ -63,7 +63,7 @@ local function worker(args)
|
||||||
|
|
||||||
helpers.set_map("fs", false)
|
helpers.set_map("fs", false)
|
||||||
|
|
||||||
function fs.update()
|
function update()
|
||||||
fs_info = {}
|
fs_info = {}
|
||||||
|
|
||||||
local f = io.popen("LC_ALL=C df -kP")
|
local f = io.popen("LC_ALL=C df -kP")
|
||||||
|
@ -108,20 +108,12 @@ local function worker(args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers.newtimer(partition, timeout, fs.update)
|
helpers.newtimer(partition, timeout, update)
|
||||||
|
|
||||||
widget:connect_signal('mouse::enter', function () fs:show(0) end)
|
widget:connect_signal('mouse::enter', function () fs:show(0) end)
|
||||||
widget:connect_signal('mouse::leave', function () fs:hide() end)
|
widget:connect_signal('mouse::leave', function () fs:hide() end)
|
||||||
|
|
||||||
output = {
|
return setmetatable(fs, { __index = fs.widget })
|
||||||
widget = fs.widget,
|
|
||||||
show = function(t_out)
|
|
||||||
fs.update()
|
|
||||||
fs:show(t_out)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
return setmetatable(output, { __index = output.widget })
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return setmetatable(fs, { __call = function(_, ...) return worker(...) end })
|
return setmetatable(fs, { __call = function(_, ...) return worker(...) end })
|
||||||
|
|
|
@ -47,8 +47,8 @@ local function worker(args)
|
||||||
|
|
||||||
imap.widget = wibox.widget.textbox('')
|
imap.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function imap.update()
|
function update()
|
||||||
notification_preset = {
|
mail_notification_preset = {
|
||||||
icon = helpers.icons_dir .. "mail.png",
|
icon = helpers.icons_dir .. "mail.png",
|
||||||
position = "top_left"
|
position = "top_left"
|
||||||
}
|
}
|
||||||
|
@ -73,13 +73,13 @@ local function worker(args)
|
||||||
else
|
else
|
||||||
nt = mail .. " has <b>" .. mailcount .. "</b> new messages"
|
nt = mail .. " has <b>" .. mailcount .. "</b> new messages"
|
||||||
end
|
end
|
||||||
naughty.notify({ preset = notification_preset, text = nt })
|
naughty.notify({ preset = mail_notification_preset, text = nt })
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers.set_map(mail, mailcount)
|
helpers.set_map(mail, mailcount)
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers.newtimer(mail, timeout, imap.update, true)
|
helpers.newtimer(mail, timeout, update, true)
|
||||||
return imap.widget
|
return imap.widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ local function worker(args)
|
||||||
|
|
||||||
maildir.widget = wibox.widget.textbox('')
|
maildir.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function maildir.update()
|
function update()
|
||||||
-- Find pathes to mailboxes.
|
-- Find pathes to mailboxes.
|
||||||
local p = io.popen("find " .. mailpath ..
|
local p = io.popen("find " .. mailpath ..
|
||||||
" -mindepth 1 -maxdepth 1 -type d" ..
|
" -mindepth 1 -maxdepth 1 -type d" ..
|
||||||
|
@ -88,8 +88,7 @@ local function worker(args)
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer(mailpath, timeout, maildir.update, true)
|
newtimer(mailpath, timeout, update, true)
|
||||||
|
|
||||||
return maildir.widget
|
return maildir.widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
Licensed under GNU General Public License v2
|
Licensed under GNU General Public License v2
|
||||||
* (c) 2013, Luke Bonham
|
* (c) 2013, Luke Bonham
|
||||||
* (c) 2010-2012, Peter Hofmann
|
* (c) 2010-2012, Peter Hofmann
|
||||||
* (c) 2010, Adrian C. <anrxc@sysphere.org>
|
|
||||||
* (c) 2009, Lucas de Vries <lucas@glacicle.com>
|
|
||||||
|
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
local newtimer = require("lain.helpers").newtimer
|
local newtimer = require("lain.helpers").newtimer
|
||||||
|
@ -32,30 +30,30 @@ local function worker(args)
|
||||||
|
|
||||||
mem.widget = wibox.widget.textbox('')
|
mem.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function mem.update()
|
function update()
|
||||||
mem = {}
|
mem_now = {}
|
||||||
for line in io.lines("/proc/meminfo")
|
for line in io.lines("/proc/meminfo")
|
||||||
do
|
do
|
||||||
for k, v in string.gmatch(line, "([%a]+):[%s]+([%d]+).+")
|
for k, v in string.gmatch(line, "([%a]+):[%s]+([%d]+).+")
|
||||||
do
|
do
|
||||||
if k == "MemTotal" then mem.total = math.floor(v / 1024)
|
if k == "MemTotal" then mem_now.total = math.floor(v / 1024)
|
||||||
elseif k == "MemFree" then mem.free = math.floor(v / 1024)
|
elseif k == "MemFree" then mem_now.free = math.floor(v / 1024)
|
||||||
elseif k == "Buffers" then mem.buf = math.floor(v / 1024)
|
elseif k == "Buffers" then mem_now.buf = math.floor(v / 1024)
|
||||||
elseif k == "Cached" then mem.cache = math.floor(v / 1024)
|
elseif k == "Cached" then mem_now.cache = math.floor(v / 1024)
|
||||||
elseif k == "SwapTotal" then mem.swap = math.floor(v / 1024)
|
elseif k == "SwapTotal" then mem_now.swap = math.floor(v / 1024)
|
||||||
elseif k == "SwapFree" then mem.swapf = math.floor(v / 1024)
|
elseif k == "SwapFree" then mem_now.swapf = math.floor(v / 1024)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
used = mem.total - (mem.free + mem.buf + mem.cache)
|
mem_now.used = mem_now.total - (mem_now.free + mem_now.buf + mem_now.cache)
|
||||||
swapused = mem.swap - mem.swapf
|
mem_now.swapused = mem_now.swap - mem_now.swapf
|
||||||
|
|
||||||
widget = mem.widget
|
widget = mem.widget
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer("mem", timeout, mem.update)
|
newtimer("mem", timeout, update)
|
||||||
|
|
||||||
return mem.widget
|
return mem.widget
|
||||||
end
|
end
|
||||||
|
|
|
@ -40,7 +40,7 @@ local function worker(args)
|
||||||
|
|
||||||
mpd.widget = wibox.widget.textbox('')
|
mpd.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
notification_preset = {
|
mpd_notification_preset = {
|
||||||
title = "Now playing",
|
title = "Now playing",
|
||||||
timeout = 6
|
timeout = 6
|
||||||
}
|
}
|
||||||
|
@ -73,8 +73,8 @@ local function worker(args)
|
||||||
|
|
||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
notification_preset.text = string.format("%s (%s) - %s\n%s", mpd_now.artist,
|
mpd_notification_preset.text = string.format("%s (%s) - %s\n%s", mpd_now.artist,
|
||||||
mpd_now.album, mpd_now.date, mpd_now.title)
|
mpd_now.album, mpd_now.date, mpd_now.title)
|
||||||
widget = mpd.widget
|
widget = mpd.widget
|
||||||
settings()
|
settings()
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ local function worker(args)
|
||||||
os.execute(string.format("%s %q %q", mpdcover, music_dir, mpd_now.file))
|
os.execute(string.format("%s %q %q", mpdcover, music_dir, mpd_now.file))
|
||||||
|
|
||||||
mpd.id = naughty.notify({
|
mpd.id = naughty.notify({
|
||||||
preset = notification_preset,
|
preset = mpd_notification_preset,
|
||||||
icon = "/tmp/mpdcover.png",
|
icon = "/tmp/mpdcover.png",
|
||||||
replaces_id = mpd.id
|
replaces_id = mpd.id
|
||||||
}).id
|
}).id
|
||||||
|
|
|
@ -50,23 +50,25 @@ local function worker(args)
|
||||||
|
|
||||||
helpers.set_map(iface, true)
|
helpers.set_map(iface, true)
|
||||||
|
|
||||||
function net.update()
|
function update()
|
||||||
|
net_now = {}
|
||||||
|
|
||||||
if iface == "" then iface = net.get_device() end
|
if iface == "" then iface = net.get_device() end
|
||||||
|
|
||||||
carrier = helpers.first_line('/sys/class/net/' .. iface ..
|
net_now.carrier = helpers.first_line('/sys/class/net/' .. iface ..
|
||||||
'/carrier') or "0"
|
'/carrier') or "0"
|
||||||
state = helpers.first_line('/sys/class/net/' .. iface ..
|
net_now.state = helpers.first_line('/sys/class/net/' .. iface ..
|
||||||
'/operstate') or "down"
|
'/operstate') or "down"
|
||||||
local now_t = helpers.first_line('/sys/class/net/' .. iface ..
|
local now_t = helpers.first_line('/sys/class/net/' .. iface ..
|
||||||
'/statistics/tx_bytes') or 0
|
'/statistics/tx_bytes') or 0
|
||||||
local now_r = helpers.first_line('/sys/class/net/' .. iface ..
|
local now_r = helpers.first_line('/sys/class/net/' .. iface ..
|
||||||
'/statistics/rx_bytes') or 0
|
'/statistics/rx_bytes') or 0
|
||||||
|
|
||||||
sent = tostring((now_t - net.last_t) / timeout / units)
|
net_now.sent = tostring((now_t - net.last_t) / timeout / units)
|
||||||
sent = string.gsub(string.format('%.1f', sent), ",", ".")
|
net_now.sent = string.gsub(string.format('%.1f', net_now.sent), ",", ".")
|
||||||
|
|
||||||
received = tostring((now_r - net.last_r) / timeout / units)
|
net_now.received = tostring((now_r - net.last_r) / timeout / units)
|
||||||
received = string.gsub(string.format('%.1f', received), ",", ".")
|
net_now.received = string.gsub(string.format('%.1f', net_now.received), ",", ".")
|
||||||
|
|
||||||
widget = net.widget
|
widget = net.widget
|
||||||
settings()
|
settings()
|
||||||
|
@ -74,7 +76,7 @@ local function worker(args)
|
||||||
net.last_t = now_t
|
net.last_t = now_t
|
||||||
net.last_r = now_r
|
net.last_r = now_r
|
||||||
|
|
||||||
if carrier ~= "1"
|
if net_now.carrier ~= "1"
|
||||||
then
|
then
|
||||||
if helpers.get_map(iface)
|
if helpers.get_map(iface)
|
||||||
then
|
then
|
||||||
|
@ -95,8 +97,7 @@ local function worker(args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers.newtimer(iface, timeout, net.update)
|
helpers.newtimer(iface, timeout, update)
|
||||||
|
|
||||||
return net.widget
|
return net.widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -28,19 +28,18 @@ local function worker(args)
|
||||||
|
|
||||||
sysload.widget = wibox.widget.textbox('')
|
sysload.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function sysload.update()
|
function update()
|
||||||
local f = io.open("/proc/loadavg")
|
local f = io.open("/proc/loadavg")
|
||||||
local ret = f:read("*all")
|
local ret = f:read("*all")
|
||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
a, b, c = string.match(ret, "([^%s]+) ([^%s]+) ([^%s]+)")
|
load_1, load_5, load_15 = string.match(ret, "([^%s]+) ([^%s]+) ([^%s]+)")
|
||||||
|
|
||||||
widget = sysload.widget
|
widget = sysload.widget
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer("sysload", timeout, sysload.update)
|
newtimer("sysload", timeout, update)
|
||||||
|
|
||||||
return sysload.widget
|
return sysload.widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ local function worker(args)
|
||||||
|
|
||||||
temp.widget = wibox.widget.textbox('')
|
temp.widget = wibox.widget.textbox('')
|
||||||
|
|
||||||
function temp.update()
|
function update()
|
||||||
local f = io.open("/sys/class/thermal/thermal_zone0/temp")
|
local f = io.open("/sys/class/thermal/thermal_zone0/temp")
|
||||||
coretemp_now = tonumber(f:read("*all")) / 1000
|
coretemp_now = tonumber(f:read("*all")) / 1000
|
||||||
f:close()
|
f:close()
|
||||||
|
@ -34,8 +34,7 @@ local function worker(args)
|
||||||
settings()
|
settings()
|
||||||
end
|
end
|
||||||
|
|
||||||
newtimer("coretemp", timeout, temp.update)
|
newtimer("coretemp", timeout, update)
|
||||||
|
|
||||||
return temp.widget
|
return temp.widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ local city_id = nil
|
||||||
local sky = nil
|
local sky = nil
|
||||||
local settings = function() end
|
local settings = function() end
|
||||||
|
|
||||||
notification_preset = {}
|
yawn_notification_preset = {}
|
||||||
|
|
||||||
local function fetch_weather()
|
local function fetch_weather()
|
||||||
local url = api_url .. units_set .. city_id
|
local url = api_url .. units_set .. city_id
|
||||||
|
@ -56,6 +56,7 @@ local function fetch_weather()
|
||||||
-- widgets won't display
|
-- widgets won't display
|
||||||
if text == "" or text:match("City not found")
|
if text == "" or text:match("City not found")
|
||||||
then
|
then
|
||||||
|
yawn.icon:set_image(icon_path .. "na.png")
|
||||||
if text == "" then
|
if text == "" then
|
||||||
weather_data = "Service not available at the moment."
|
weather_data = "Service not available at the moment."
|
||||||
yawn.widget:set_text("N/A")
|
yawn.widget:set_text("N/A")
|
||||||
|
@ -152,7 +153,7 @@ function yawn.show(t_out)
|
||||||
yawn.hide()
|
yawn.hide()
|
||||||
|
|
||||||
notification = naughty.notify({
|
notification = naughty.notify({
|
||||||
preset = notification_preset,
|
preset = yawn_notification_preset,
|
||||||
text = weather_data,
|
text = weather_data,
|
||||||
icon = sky,
|
icon = sky,
|
||||||
timeout = t_out
|
timeout = t_out
|
||||||
|
|
Loading…
Reference in New Issue