From 237470c8f45190b213e3a173ce6ae1a74b3e11fe Mon Sep 17 00:00:00 2001 From: "Adrian C. (anrxc)" Date: Sun, 14 Mar 2010 01:55:33 +0100 Subject: API: transform widgets namespace table to a directory --- widgets/cpufreq.lua | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 widgets/cpufreq.lua (limited to 'widgets/cpufreq.lua') diff --git a/widgets/cpufreq.lua b/widgets/cpufreq.lua new file mode 100644 index 0000000..7f60f5a --- /dev/null +++ b/widgets/cpufreq.lua @@ -0,0 +1,54 @@ +--------------------------------------------------- +-- Licensed under the GNU General Public License v2 +-- * (c) 2010, Adrian C. +--------------------------------------------------- + +-- {{{ Grab environment +local tonumber = tonumber +local setmetatable = setmetatable +local string = { match = string.match } +local helpers = require("vicious.helpers") +-- }}} + + +-- Cpufreq: provides freq, voltage and governor info for a requested CPU +module("vicious.widgets.cpufreq") + + +-- {{{ CPU frequency widget type +local function worker(format, cpuid) + local cpufreq = helpers.pathtotable("/sys/devices/system/cpu/"..cpuid.."/cpufreq") + local governor_state = { + ["ondemand\n"] = "↯", + ["powersave\n"] = "⌁", + ["userspace\n"] = "¤", + ["performance\n"] = "⚡", + ["conservative\n"] = "↯" + } + -- Default voltage values + local voltage = { v = "N/A", mv = "N/A" } + + + -- Get the current frequency + local freq = tonumber(cpufreq.scaling_cur_freq) + -- Calculate MHz and GHz + local freqmhz = freq / 1000 + local freqghz = freqmhz / 1000 + + -- Get the current voltage + if cpufreq.scaling_voltages then + voltage.mv = tonumber(string.match(cpufreq.scaling_voltages, freq.."[%s]([%d]+)")) + -- Calculate voltage from mV + voltage.v = voltage.mv / 1000 + end + + -- Get the current governor + local governor = cpufreq.scaling_governor + -- Represent the governor as a symbol + governor = governor_state[governor] or governor + + return {freqmhz, freqghz, voltage.mv, voltage.v, governor} +end +-- }}} + +setmetatable(_M, { __call = function(_, ...) return worker(...) end }) -- cgit v1.2.3