aboutsummaryrefslogtreecommitdiff
path: root/os.lua
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2010-03-12 03:37:39 +0100
committerAdrian C. (anrxc) <anrxc@sysphere.org>2010-03-12 03:37:39 +0100
commitedb4619a559f5f934202b939503e9624cbd17b4d (patch)
tree2c9dfabd19f375b43d05ea2ebe73097042e1e452 /os.lua
parentde1593412099dd36b0611d00776adb4bdc1805e1 (diff)
downloadvicious-legacy-edb4619a559f5f934202b939503e9624cbd17b4d.tar.xz
os: import operating system information widget
This widget type returns 1st value as the operating system in use, 2nd as the release version, 3rd as your username and 4th the hostname.
Diffstat (limited to 'os.lua')
-rw-r--r--os.lua58
1 files changed, 58 insertions, 0 deletions
diff --git a/os.lua b/os.lua
new file mode 100644
index 0000000..eb0a2b1
--- /dev/null
+++ b/os.lua
@@ -0,0 +1,58 @@
+---------------------------------------------------
+-- Licensed under the GNU General Public License v2
+-- * (c) 2010, Adrian C. <anrxc@sysphere.org>
+---------------------------------------------------
+
+-- {{{ Grab environment
+local pairs = pairs
+local io = { popen = io.popen }
+local os = { getenv = os.getenv }
+local setmetatable = setmetatable
+local helpers = require("vicious.helpers")
+local string = {
+ gsub = string.gsub,
+ match = string.match
+}
+-- }}}
+
+
+-- OS: provides operating system information
+module("vicious.os")
+
+
+-- {{{ Operating system widget type
+local function worker(format)
+ local system = {
+ ["ostype"] = "N/A",
+ ["hostname"] = "N/A",
+ ["osrelease"] = "N/A",
+ ["username"] = "N/A"
+ }
+
+ -- Linux manual page: uname(2)
+ local kernel = helpers.pathtotable("/proc/sys/kernel")
+ for k, v in pairs(system) do
+ if kernel[k] then
+ system[k] = string.gsub(kernel[k], "[%s]*$", "")
+ end
+ end
+
+ -- BSD manual page: uname(1)
+ if system["ostype"] == "N/A" then
+ local f = io.popen("uname -snr")
+ local uname = f:read("*line")
+ f:close()
+
+ system["ostype"], system["hostname"], system["osrelease"] =
+ string.match(uname, "([%w]+)[%s]([%w%p]+)[%s]([%w%p]+)")
+ end
+
+ -- Get user from the environment
+ system["username"] = os.getenv("USER")
+
+ return {system["ostype"], system["osrelease"],
+ system["username"], system["hostname"]}
+end
+-- }}}
+
+setmetatable(_M, { __call = function(_, ...) return worker(...) end })