From dcc2b60cd85dabd716e2bb8c49d9703f050eaff5 Mon Sep 17 00:00:00 2001 From: "Joerg T. (Mic92)" Date: Tue, 10 May 2011 00:47:58 +0200 Subject: vicious: load widget modules only when needed There's no more need to edit init files and manually disable widgets. Signed-off-by: Joerg T. (Mic92) Signed-off-by: Adrian C. (anrxc) --- README | 6 +++--- contrib/init.lua | 21 +++++++-------------- helpers.lua | 9 +++++++++ widgets/init.lua | 33 +++++++-------------------------- 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/README b/README index 8f3b877..d136546 100644 --- a/README +++ b/README @@ -29,9 +29,9 @@ $XDG_CONFIG_HOME (usually ~/.config): $ mv vicious $XDG_CONFIG_HOME/awesome/ -If you want you can disable widgets you will not use, to avoid having -useless modules sitting in your memory. You can comment out any widget -type from the "Configure widgets" list in the widgets/init.lua file. +Vicious will only load modules for widget types you intend to use in +your awesome configuration, to avoid having useless modules sitting in +your memory. Then add the following to the top of your rc.lua: diff --git a/contrib/init.lua b/contrib/init.lua index a8c5ee6..7fee3b3 100644 --- a/contrib/init.lua +++ b/contrib/init.lua @@ -5,20 +5,13 @@ -- * (c) 2010, Adrian C. --------------------------------------------------- --- {{{ Configure widgets -require("vicious.contrib.batacpi") -require("vicious.contrib.batpmu") -require("vicious.contrib.batproc") -require("vicious.contrib.dio") -require("vicious.contrib.mpc") -require("vicious.contrib.netcfg") -require("vicious.contrib.net") -require("vicious.contrib.ossvol") -require("vicious.contrib.pop") -require("vicious.contrib.pulse") -require("vicious.contrib.rss") -require("vicious.contrib.sensors") --- }}} +-- {{{ Setup environment +local setmetatable = setmetatable +local wrequire = require("vicious.helpers").wrequire -- Vicious: widgets for the awesome window manager module("vicious.contrib") +-- }}} + +-- Load modules at runtime as needed +setmetatable(_M, { __index = wrequire }) diff --git a/helpers.lua b/helpers.lua index ef92bfa..223c5f1 100644 --- a/helpers.lua +++ b/helpers.lua @@ -9,6 +9,8 @@ -- {{{ Grab environment local pairs = pairs +local rawget = rawget +local require = require local tonumber = tonumber local io = { open = io.open } local setmetatable = setmetatable @@ -29,6 +31,13 @@ local scroller = {} -- }}} -- {{{ Helper functions +-- {{{ Loader of vicious modules +function wrequire(table, key) + local module = rawget(table, key) + return module or require(table._NAME .. "." .. key) +end +-- }}} + -- {{{ Expose path as a Lua table function pathtotable(dir) return setmetatable({ _path = dir }, diff --git a/widgets/init.lua b/widgets/init.lua index c8af255..6ec6360 100644 --- a/widgets/init.lua +++ b/widgets/init.lua @@ -5,32 +5,13 @@ -- * (c) 2010, Adrian C. --------------------------------------------------- --- {{{ Configure widgets -require("vicious.widgets.cpu") -require("vicious.widgets.cpuinf") -require("vicious.widgets.cpufreq") -require("vicious.widgets.thermal") -require("vicious.widgets.uptime") -require("vicious.widgets.bat") -require("vicious.widgets.mem") -require("vicious.widgets.os") -require("vicious.widgets.fs") -require("vicious.widgets.dio") -require("vicious.widgets.raid") -require("vicious.widgets.hddtemp") -require("vicious.widgets.net") -require("vicious.widgets.wifi") -require("vicious.widgets.mbox") -require("vicious.widgets.mboxc") -require("vicious.widgets.mdir") -require("vicious.widgets.gmail") -require("vicious.widgets.org") -require("vicious.widgets.pkg") -require("vicious.widgets.mpd") -require("vicious.widgets.volume") -require("vicious.widgets.weather") -require("vicious.widgets.date") --- }}} +-- {{{ Setup environment +local setmetatable = setmetatable +local wrequire = require("vicious.helpers").wrequire -- Vicious: widgets for the awesome window manager module("vicious.widgets") +-- }}} + +-- Load modules at runtime as needed +setmetatable(_M, { __index = wrequire }) -- cgit v1.2.3