diff options
author | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-03-12 03:37:39 +0100 |
---|---|---|
committer | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-03-12 03:37:39 +0100 |
commit | edb4619a559f5f934202b939503e9624cbd17b4d (patch) | |
tree | 2c9dfabd19f375b43d05ea2ebe73097042e1e452 /os.lua | |
parent | de1593412099dd36b0611d00776adb4bdc1805e1 (diff) | |
download | vicious-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.lua | 58 |
1 files changed, 58 insertions, 0 deletions
@@ -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 }) |