widgets fix

This commit is contained in:
luke bonham 2013-09-13 00:07:44 +02:00 committed by copycat-killer
parent bc574619fe
commit 4bde4b5eea
14 changed files with 80 additions and 88 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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 })

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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