diff options
author | Adrian C. (anrxc) <anrxc@sysphere.org> | 2009-08-06 02:26:23 +0200 |
---|---|---|
committer | Adrian C. (anrxc) <anrxc@sysphere.org> | 2009-08-06 02:26:23 +0200 |
commit | 013dd08225ed70010ef983172873766aa9a5d9fb (patch) | |
tree | 551a20c8eb2c4af0edfa5cc1517be7705651cc5f | |
parent | 515cc0dd6bc24d56e85803f626e60fa70bb73b4e (diff) | |
download | vicious-legacy-013dd08225ed70010ef983172873766aa9a5d9fb.tar.xz |
HDD Temperature widget included.
Widget uses the hddtemp daemon to return the temperatures for all
available hard drives. It uses curl and connects to the daemon over
telnet.
-rw-r--r-- | hddtemp.lua | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/hddtemp.lua b/hddtemp.lua new file mode 100644 index 0000000..e703278 --- /dev/null +++ b/hddtemp.lua @@ -0,0 +1,39 @@ +---------------------------------------------------------- +-- Licensed under the GNU General Public License version 2 +-- * Copyright (C) 2009 Adrian C. <anrxc_sysphere_org> +---------------------------------------------------------- + +-- {{{ Grab environment +local io = { popen = io.popen } +local setmetatable = setmetatable +-- }}} + + +-- Hddtemp: provides hard drive temperatures using the hddtemp daemon +module("vicious.hddtemp") + + +-- {{{ HDD Temperature widget type +function worker(format, port) + -- Fallback to default hddtemp port + if port == nil then port = 7634 end + + -- Get info from the hddtemp daemon + local f = io.popen("curl --max-time 3 -f -s telnet://127.0.0.1:" .. port) + local hdd_temp = {} + + -- Get temperature data + for line in f:lines() do + local disk, temp = line:match("|([%/%a]+)|.*|([%d]+)|[CF]+|") + + if disk ~= nil and temp ~= nil then + hdd_temp["{"..disk.."}"] = temp + end + end + f:close() + + return hdd_temp +end +-- }}} + +setmetatable(_M, { __call = function(_, ...) return worker(...) end }) |