aboutsummaryrefslogtreecommitdiff
path: root/hddtemp.lua
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2009-08-06 02:26:23 +0200
committerAdrian C. (anrxc) <anrxc@sysphere.org>2009-08-06 02:26:23 +0200
commit013dd08225ed70010ef983172873766aa9a5d9fb (patch)
tree551a20c8eb2c4af0edfa5cc1517be7705651cc5f /hddtemp.lua
parent515cc0dd6bc24d56e85803f626e60fa70bb73b4e (diff)
downloadvicious-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.
Diffstat (limited to 'hddtemp.lua')
-rw-r--r--hddtemp.lua39
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 })