From: copycat-killer Date: Sat, 7 Jan 2017 14:12:41 +0000 (+0100) Subject: alsa/bat textbox resize fix X-Git-Url: https://git.madduck.net/etc/awesome.git/commitdiff_plain/fd35485c200a52c9429f9a4f3f5c8282b64dba30?ds=inline alsa/bat textbox resize fix --- diff --git a/README.rst b/README.rst index f6938bd..6c7bb01 100644 --- a/README.rst +++ b/README.rst @@ -15,7 +15,7 @@ Description **Note:** the update to 4.x is still in progress: if you experience issues, please report them in order to speed up the process. -Successor of awesome-vain_, this module provides new layouts, a set of widgets and utility functions, in order to improve Awesome_ usability and configurability. +Successor of awesome-vain_, this module provides new layouts, a set of widgets and utility functions, with the aim of improving Awesome_ usability and configurability. Read the wiki_ for all the info. diff --git a/widgets/abase.lua b/widgets/abase.lua index fb20d76..60d86ab 100644 --- a/widgets/abase.lua +++ b/widgets/abase.lua @@ -12,8 +12,7 @@ local wibox = require("wibox") local setmetatable = setmetatable --- Basic template for custom widgets --- Asynchronous version +-- Basic template for custom widgets (asynchronous version) -- lain.widgets.abase local function worker(args) diff --git a/widgets/alsa.lua b/widgets/alsa.lua index 7500097..670765a 100644 --- a/widgets/alsa.lua +++ b/widgets/alsa.lua @@ -7,7 +7,7 @@ --]] -local newtimer = require("lain.helpers").newtimer +local helpers = require("lain.helpers") local read_pipe = require("lain.helpers").read_pipe local wibox = require("wibox") @@ -19,7 +19,7 @@ local setmetatable = setmetatable -- ALSA volume -- lain.widgets.alsa -local alsa = { last_level = "0", last_status = "" } +local alsa = helpers.make_widget_textbox() local function worker(args) local args = args or {} @@ -29,11 +29,12 @@ local function worker(args) alsa.cmd = args.cmd or "amixer" alsa.channel = args.channel or "Master" alsa.togglechannel = args.togglechannel - alsa.widget = wibox.widget.textbox('') + alsa.last_level = "0" + alsa.last_status = "" function alsa.update() mixer = read_pipe(string.format("%s get %s", alsa.cmd, alsa.channel)) - l,s = string.match(mixer, "([%d]+)%%.*%[([%l]*)") + l, s = string.match(mixer, "([%d]+)%%.*%[([%l]*)") -- HDMIs can have a channel different from Master for toggling mute if alsa.togglechannel then @@ -51,9 +52,9 @@ local function worker(args) end timer_id = string.format("alsa-%s-%s", alsa.cmd, alsa.channel) - newtimer(timer_id, timeout, alsa.update) + helpers.newtimer(timer_id, timeout, alsa.update) - return setmetatable(alsa, { __index = alsa.widget }) + return alsa end return setmetatable(alsa, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/base.lua b/widgets/base.lua index cd84e36..642a858 100644 --- a/widgets/base.lua +++ b/widgets/base.lua @@ -8,7 +8,6 @@ local newtimer = require("lain.helpers").newtimer local read_pipe = require("lain.helpers").read_pipe - local wibox = require("wibox") local setmetatable = setmetatable diff --git a/widgets/bat.lua b/widgets/bat.lua index f63b1fa..8e483f7 100644 --- a/widgets/bat.lua +++ b/widgets/bat.lua @@ -7,7 +7,7 @@ --]] -local newtimer = require("lain.helpers").newtimer +local helpers = require("lain.helpers") local first_line = require("lain.helpers").first_line local naughty = require("naughty") @@ -27,7 +27,7 @@ local setmetatable = setmetatable -- lain.widgets.bat local function worker(args) - local bat = {} + local bat = helpers.make_widget_textbox() local args = args or {} local timeout = args.timeout or 30 local batteries = args.batteries or (args.battery and {args.battery}) or {"BAT0"} @@ -35,8 +35,6 @@ local function worker(args) local notify = args.notify or "on" local settings = args.settings or function() end - bat.widget = wibox.widget.textbox('') - bat_notification_low_preset = { title = "Battery low", text = "Plug the cable!", @@ -165,9 +163,9 @@ local function worker(args) end end - newtimer(battery, timeout, bat.update) + helpers.newtimer(battery, timeout, bat.update) - return setmetatable(bat, { __index = bat.widget }) + return bat end return setmetatable({}, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/cpu.lua b/widgets/cpu.lua index 737b6fa..c33c7eb 100644 --- a/widgets/cpu.lua +++ b/widgets/cpu.lua @@ -25,28 +25,26 @@ local cpu = { core = {} } local function worker(args) local args = args or {} - local timeout = args.timeout or 2 - local settings = args.settings or function() end + local timeout = args.timeout or 2 + local settings = args.settings or function() end - cpu.widget = wibox.widget.textbox('') + cpu.widget = wibox.widget.textbox('') - function update() + function update() -- Read the amount of time the CPUs have spent performing - -- different kinds of work. Read the first line of /proc/stat - -- which is the sum of all CPUs. + -- different kinds of work. Read the first line of /proc/stat + -- which is the sum of all CPUs. local times = lines_match("cpu","/proc/stat") - for index,time in pairs(times) - do + for index,time in pairs(times) do local coreid = index - 1 - local core = cpu.core[coreid] or - { last_active = 0 , last_total = 0, usage = 0 } - local at = 1 - local idle = 0 - local total = 0 - - for field in string.gmatch(time, "[%s]+([^%s]+)") - do + local core = cpu.core[coreid] or + { last_active = 0 , last_total = 0, usage = 0 } + local at = 1 + local idle = 0 + local total = 0 + + for field in string.gmatch(time, "[%s]+([^%s]+)") do -- 4 = idle, 5 = ioWait. Essentially, the CPUs have done -- nothing during these times. if at == 4 or at == 5 then @@ -62,15 +60,14 @@ local function worker(args) -- Read current data and calculate relative values. local dactive = active - core.last_active local dtotal = total - core.last_total - - local usage = math.ceil((dactive / dtotal) * 100) + local usage = math.ceil((dactive / dtotal) * 100) core.last_active = active core.last_total = total core.usage = usage -- Save current data for the next run. - cpu.core[coreid] = core; + cpu.core[coreid] = core end end @@ -82,6 +79,7 @@ local function worker(args) end newtimer("cpu", timeout, update) + return cpu.widget end