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 | |
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.
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | init.lua | 1 | ||||
-rw-r--r-- | os.lua | 58 |
3 files changed, 64 insertions, 0 deletions
@@ -210,6 +210,11 @@ vicious.widgets.mem in percent, 6th as swap usage, 7th as total system swap and 8th as free swap +vicious.widgets.os + - provides operating system information + - returns 1st value as the operating system in use, 2nd as the + release version, 3rd as your username and 4th the hostname + vicious.widgets.fs - provides file system disk space usage - takes an (optional) argument which, if true, includes remote file @@ -28,6 +28,7 @@ require("vicious.thermal") require("vicious.uptime") require("vicious.bat") require("vicious.mem") +require("vicious.os") require("vicious.fs") require("vicious.dio") require("vicious.hddtemp") @@ -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 }) |